2017-04-06 124 views
2

我試圖設置一個外鍵作爲主鍵使用實體框架和流利的API。如何使用實體框架將外鍵設置爲主鍵?

modelBuilder.Entity<Z>() 
      .HasRequired(m => m.X) 
      .WithRequireDependent(m => m.Y) 
      .WillCascadeOnDelete(); 

我的類:

public class Z 
{ 
     [Key,ForeignKey("X")] 
     [DatabaseGenerated(DatabaseGeneratedOption.None)] 
     public RentCar X { get; set; } 
     public DateTime AIA_KM { get; set; } 
     public DateTime AIA_FEC { get; set; } 
} 

我檢查這個計算器問題Entity Framework Foreign Key as Primary Key Code First前,但對我不起作用。

謝謝。

回答

1

添加的RentCar的PK中你Z實體,並添加以下配置:

public class Z 
{ 
     public int RentCarId { get; set; }//Add this 

     public RentCar X { get; set; } 
     public DateTime AIA_KM { get; set; } 
     public DateTime AIA_FEC { get; set; } 
} 

並添加以下配置:

modelBuilder.Entity<Z>().HasKey(t => t.RentCarId);// Add this 
modelBuilder.Entity<Z>() 
      .HasRequired(m => m.X) 
      .WithRequireDependent(m => m.Y) 
      .WillCascadeOnDelete(); 

從這個link

選擇WithRequiredPrincipal將使您的實體 配置主體,這意味着它包含 關係的主鍵。選擇WithRequiredDependent將使實體 您正在配置依賴項,這意味着它將具有 關係的外鍵。

所以按照慣例,你的PK依賴實體(Z)將是一個的FK到一個關係

+0

我以前嘗試這樣做,我得到了新的關鍵領域,但我不獲得RentCar X專欄。非常感謝。沒有RentCar X專欄,我們不會失去這種關係? –

+1

'X'是一個導航屬性,就像關係的其中一個末端的表示一樣,它不會被表示爲表中的列 – octavioccl

+0

Hi @ DavidJ.E。如果您認爲我的回答有助於您解決問題,請考慮將其標記爲答覆,然後點擊對號。 – octavioccl