Hallo, ya'll! Erste Frage zu StackOverflow! :-)Alternative zur Verwendung einer Entität als Parameter für eine Aufrrichtmethode in WCF RIA Services
Also hier ist das Szenario: Wir arbeiten an einer Webanwendung mit Silverlight 4 und WCF RIA Services 1.0 SP1 Beta für den Webdienst verwenden. Ich habe meine Entitäten im Entity Framework Designer, verwende aber eine leicht modifizierte ADO.NET C# POCO Entity Generator-Vorlage, um die Klassen zu generieren.
Was würde ich tun möchte, ist ein Verfahren in einem Domain-Service hat mit der folgenden Signatur:
[EnableClientAccess]
public class ResultService : DomainService
{
[Invoke]
public SerializableResult CalculateResult(EntityOne e1, EntityTwo e2);
}
ich beide EntityOne und EntityTwo an den Client durch Abfragen in anderen Diensten kehre zurück, etwa so:
[EnableClientAccess]
public class EntityOneService : DomainService
{
public IQueryable<EntityOne> GetEntityOnes();
}
[EnableClientAccess]
public class EntityOneService : DomainService
{
public IQueryable<EntityTwo> GetEntityTwos();
}
Diese Klassen sind erfolgreich in der Silverlight-Projekt erzeugt werden. Das SerializableResult hat nicht einen Schlüssel.
Wenn ich versuche, zu kompilieren, erhalte ich den folgenden Fehler: "Operation mit dem Namen 'CalculateResult' entspricht nicht der erforderlichen Signatur. Parametertypen müssen eine Entität oder ein komplexer Typ, eine Sammlung komplexer Typen oder einer der sein vordefinierte serialisierbare Typen. "
In meiner Recherche fand ich die hilfreichsten Informationen in den Kommentaren this post by Jeff Handley.
Bemerken, fragte Peter in einem Kommentar:
I get an 'does not conform to the required signature ...' compile error if my complex object has an [Key] Attribute. When I remove this attribute I can use the object as parameter for an Invoke operation.
Jeffs Antwort:
This is by design. Complex objects cannot have Key properties. If you have a Key the class gets treated as an Entity.
So klingt es, als ob noch weitere Anstrengungen, um zu versuchen, meine Methode zu bekommen zu arbeiten vergeblich sein. Ich habe mich jedoch gefragt, ob jemand anderes auf dieses Problem gestoßen ist und was sie getan haben, um es zu lösen.
Vielen Dank!
Wird SerializableResult auf dem Client generiert? Ich frage mich, ob dies ein Fehler in unserer Complex Type-Identifikation ist, wo wir möglicherweise den SerializableResult-Typ als Eigenschaft auf einer Entity auftauchen müssen, bevor er als Invoke-Ergebnis verwendet werden kann. –
Wenn ich versuche: "[Invoke] public SerializableResult CalculateResult();", SerializableResult _is_ wird auf dem Client generiert. –
Dann klingt es wie etwas mit den Formen Ihrer Entitäten. Werden EntityOne und EntityTwo als Entity generiert? –