簡體   English   中英

實體框架TPH創建多個ID列

[英]Entity Framework TPH creating multiple ID columns

我有以下幾點:

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類型列表嗎? 它們應該是具體的類類型列表嗎?

[InverseProperty]部分修復了它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM