2014-10-02 30 views
0

我有以下几点:实体框架TPH创建多个ID列

class Employee { 
[Key] 
public int EmployeeID {get;set;} 
public List<TimeSensitiveData> JobTitle {get;set;} 
public List<TimeSensitiveData> Department {get;set;} 
public List<TimeSensitiveData> OfficeLocation {get;set;} 
} 

abstract class TimeSensitiveData { 
[Key] 
public int TimeSensitiveDataID {get;set;} 
public string Value1 {get;set;} 
public DateTime Date {get;set;} 
} 

class JobTitle : TimeSensitiveData {} 
class Department : TimeSensitiveData {} 
class OfficeLocation : TimeSensitiveData {} 

种方法看起来是这样的:

seed() { 
List<TimeSeriesData> oflc = new List<TimeSeriesData>(); 
      TimeSeriesData oflc2 = new OfficeLocation(); 
      oflc2.Value1 = "New York"; 
      oflc.Add(oflc2); 
List<TimeSeriesData> dpt = new List<TimeSeriesData>(); 
      TimeSeriesData dpt2 = new Department(); 
      dpt2.Value1 = "New York"; 
      dpt.Add(dpt2); 
    List<TimeSeriesData> jt = new List<TimeSeriesData>(); 
      TimeSeriesData jt2 = new JobTitle(); 
      jt2.Value1 = "New York"; 
      jt.Add(jt2); 

var Employees = new List<Employee> { 
    new Employee{JobTitle=jt,Department=dpt,OfficeLocation=oflc}, 

} 

} 

,当我与员工种子数据库它创建一个雇员表和TimeSensitiveData表。在TimeSensitiveData表中有一个Discriminator列(我知道它在做什么),但也有多个Employee_EmployeeID列。实际上,它似乎是为每个延伸TimeSensitiveData的复杂对象创建一个。

所以TimeSensitiveData表看起来有点像这个

TimeSensitiveDataID Value1 Date Discriminator Employee_EmployeeID Employee_EmployeeID1 Employee_EmployeeID2 
1     xx  date JobTitle  NULL    NULL(or value)  NULL 
2 
etc.. 
etc.. 

我不知道为什么发生这种情况,任何想法?

我应该让员工模型中的列表不是TimeSensitiveData类型列表?他们应该是具体的类型列表吗?

+0

您是否有任何其他流利配置的实体?如果用'[Key]'属性标记'TimeSensitiveDataID'列,它仍然会这样做吗? – DavidG 2014-10-02 13:43:41

+0

@DavidG是啊我其实已经有[Key]属性设置,同样的问题,我会更新问题 – 2014-10-02 13:45:02

+0

@DavidG其实,模型关闭,让我更新 – 2014-10-02 14:00:11

回答

0

[InverseProperty]对其进行了部分修复