Ich stehe derzeit vor einem Problem, bei dem ich versuche, eine WPF-Clientseite Teil einer unserer ersten DevForce-Entitäten zu machen. Das Problem ist, dass das Partial im WPF-Client scheinbar keinen Zugriff auf die Eigenschaften in seinen Geschwistern hat, die teilweise in dem Modellprojekt sind, auf das das Clientprojekt verwiesen hat.Clientseite partiell für DevForce Entität kann die in den Modellen partiell freigelegten Eigenschaften nicht sehen
Ich habe den gleichen Namespace sowohl im Client als auch im Modell verwendet, aber die Client-Seite kommt immer wieder zurück, da es sich um einen Teil mit nur einer einzigen Datei handelt.
Meine Hauptschlussfolgerung dafür ist, dass ich auf Eigenschaften einer statischen Klasse zugreifen muss, die sich in meinem Clientprojekt innerhalb einer Eigenschaft befindet, die ich der clientseitigen Entität Partial hinzufüge. Eine Probe davon folgt:
Modell Buddy Klasse:
using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Security.Principal;
using IbEm = IdeaBlade.EntityModel;
using IdeaBlade.EntityModel.Security;
using IdeaBlade.Validation;
// ReSharper disable CheckNamespace
namespace BearPaw.Models.Main
{
[MetadataType(typeof(NavigationButtonGroupMetadata))]
public partial class NavigationButtonGroup
{
[IbEm.AllowRpc]
public static object NameAlreadyInUse(IPrincipal principal,
IbEm.EntityManager entityManager, params Object[] args)
{
string buttonGroupNameToCheck = (string)args[0];
var serverButtonGroup = entityManager.GetQuery<NavigationButtonGroup>().FirstOrDefault((u) => u.Name == buttonGroupNameToCheck);
return serverButtonGroup != null;
}
}
public class NavigationButtonGroupMetadata
{
[RegexVerifier("Name", @"^[A-Za-z_]*$")]
[StringLengthVerifier(MaxValue = 100, IsRequired = true, ErrorMessage = "Button Group Name must be unique")]
public static string Name;
}
}
Client Side Teil:
using System;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Security.Principal;
using IbEm = IdeaBlade.EntityModel;
using IdeaBlade.EntityModel.Security;
using IdeaBlade.Validation;
// ReSharper disable CheckNamespace
namespace BearPaw.Models.Main
{
[MetadataType(typeof(NavigationButtonGroupMetadata))]
public partial class NavigationButtonGroup
{
public bool IsEnabled
{
get
{
{
if (NavigationButtonGroupType.AlwaysVisible || (DynamicMenuItemsHelper.MenuDetails != null && DynamicMenuItemsHelper.MenuDetails.Count() > 0)) return true;
var currentUser = Authenticator.Instance?.DefaultAuthenticationContext?.Principal?.Identity;
return currentUser != null && NavigationButtons.
Any(b => b.IsEnabled);
}
}
}
}
}
Visual Studio Fehler auf NavigationButtonGroupType.AlwaysVisible kompilieren zeigt einen Objektverweis angegeben ist, für die erforderlich ist, nicht statisches Feld, obwohl NavigationButtonGroupType eine Nav-Prop für die Entität im Modell ist. Ein ähnliches Problem tritt auf, wenn NavigationButtons auch eine nav-Eigenschaft ist, Visual Studio jedoch angibt, dass es im aktuellen Kontext nicht vorhanden ist.
Jede Hilfe oder Hinweise, warum dies nicht funktionieren würde sehr geschätzt.
Vielen Dank
Lee
Hallo Kim, danke dafür. Ich glaube, ich habe mich aufgrund des folgenden Textes aus dem IdeaBlade DRC in die Irre geführt. "Ein saubererer und einfacherer Weg besteht darin, zusätzliche partielle Klassendateien entweder im .NET-Projekt oder im Client-Projekt zu erstellen und absichtlich nicht zu verknüpfen." Das ließ mich denken, dass es eine "geheime Soße" gab, die dies erlauben könnte. Dieser Code war für einige Navigationsstruktur, die ich hoffte, um eine ganze VM nicht zu schreiben, nur um die Struktur und die Entitäten zu halten, sieht aus, als ob ich neu denken muss, denke ich. Danke für die schnelle Antwort. –