2016-04-23 12 views
1

Was ist der Zweck der Code Eigenschaft von InheritanceMappingAttribute Attribut? Die Dokumentation besagt, dass es sich um die IsDiscriminator Eigenschaft handelt. Allerdings kenne ich die IsDiscriminator Eigenschaft auch nicht.LINQ VererbungMappingAttribute Code Eigenschaft

Ich lese dieses exemple:

public enum ShapeType 
{ 
    Square = 0, Circle = 1 
} 
[Table(Name = "Shape")] 
[InheritanceMapping(Code = ShapeType.Square, Type = typeof(Square), 
    IsDefault = true)] 
[InheritanceMapping(Code = ShapeType.Circle, Type = typeof(Circle))] 

abstract public class Shape 
{ 
    [Column(IsDiscriminator = true)] 
    public ShapeType ShapeType = 0; 
} 

public class Square : Shape 
{ 
    [Column] 
    public int Side = 0; 
} 
public class Circle : Shape 
{ 
    [Column] 
    public int Radius = 0; 
} 

Auf meinem Fall habe ich drei Tabellen, Persons, Clients, Functionaries. Und drei Klassen Person (Zusammenfassung), Client und Functionary. Das heißt, in Person Tabelle sind die gemeinsamen Daten zwischen Client und Functionary. In der Clients Tabelle sind die Daten von Client. Und in der Functionaries Tabelle sind die Daten von Functionary.

Wie funktioniert das Mapping in diesem Fall?

Antwort

0

Mit EF6 müssen Sie die Zuordnungen nicht konfigurieren. Erstellen Sie einfach die Klassen und EF den Rest.

public abstract class Person 
{ 
    public int Id { get; set; } 
} 

[Table("Clients")] 
public class Client : Person 
{ 
} 

[Table("Functionaries")] 
public class Functionary : Person 
{ 
} 

EF erstellt 3 Tabellen und legt die Beziehungen fest.

table mapping

hinzufügen Typen

context.Persons.Add(new Client()); 
context.Persons.Add(new Functionary()); 

können Sie die Typen Abfrage mit

Persons.OfType<Client>() 
Verwandte Themen