2016-04-23 56 views
1

InheritanceMappingAttribute屬性的Code屬性的用途是什麼? 該文檔說明它與IsDiscriminator屬性有關。但是,我也不知道IsDiscriminator屬性。LINQ InheritanceMappingAttribute代碼屬性

我閱讀本例:

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; 
} 

在我的情況,我有三個表,PersonsClientsFunctionaries。和三類Person(摘要),ClientFunctionary。也就是說,在Person表中是ClientFunctionary之間的公共數據。在Clients表中是Client的數據。並且在Functionaries表中的數據是Functionary

這種情況下的映射如何?

回答

0

使用EF6,您不必配置映射。只需創建類,EF完成剩下的工作。

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

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

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

EF創建3個表並設置關係。

table mapping

添加類型

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

您可以

Persons.OfType<Client>() 
查詢類型