2016-03-20 14 views
0

Ich habe eine Bibliothek mit einem Modell, das auf zwei verschiedene Arten in zwei verschiedenen Projekten serialisiert werden muss.Hinzufügen von IDs zu Modellen in einer anderen Bibliothek C#

Sie sehen im Grunde wie

public class Computer 
{ 
    public string DnsHostname { get; set; } 
    public string Name { get; set; } 
    public string OperatingSystem { get; set; } 
    public string ServicePack { get; set; } 
    public int Id { get; set; } 

    public List<LocalGroup> LocalGroups { get; set; } 
    public List<LocalUser> LocalUsers { get; set; } 
} 

In einem Projekt, muss ich als XML serialisiert. In einem anderen projizierten bleibe ich durch die EF. EF möchte jedoch eine ID, und da hatte ich ein paar Probleme.

Ein weiteres Problem in diesem Szenario ist, dass das EF-Projekt in der Lage sein muss, die Objekte zu deserialisieren und sie in der Datenbank zu speichern.

Also dachte ich wirklich, was ich wollte, war Interfaces, so entwickelte ich Schnittstellen wie IComputer, ILocalGroup, und . Das Problem ist, dass, wenn ich List<LocalUser> zu List<ILocalUser> ändern die Klasse, die die Schnittstelle implementiert wird nicht zufrieden sein, es sei denn, der Typ des Implementierers ist List<ILocalUser>, obwohl ich wirklich wollen List<LocalUser>, weil EF nicht die Klasse verwenden wird, die die Schnittstelle implementiert hat die ID.

Hoffentlich war ich klar genug.

+0

Gibt es einen Grund, warum Sie nicht wollen, Id in der Schnittstelle schließen und nicht nur die Umsetzung? –

Antwort

0

Gibt es für das Id-Serialisierungsproblem eine Möglichkeit, einige der Eigenschaften als Schlüssel (mit Datenannotation) zu markieren, um Entity Framework beim Serialisieren der Klasse zu unterstützen? Ie.

public class Computer 
{ 
    public string DnsHostname { get; set; } 
    [Key] 
    public string Name { get; set; } 
    public string OperatingSystem { get; set; } 
    public string ServicePack { get; set; } 

    public List<LocalGroup> LocalGroups { get; set; } 
    public List<LocalUser> LocalUsers { get; set; } 
} 

Was die Schnittstelle Problem kann dieser Artikel helfen/Ihnen einige zusätzliche Gedanken zum Thema: Faking interface mappings with EF

Verwandte Themen