簡體   English   中英

Code First實體框架和外鍵

[英]Code First entity framework and foreign keys

想象一下,我有一個由代碼創建的數據庫,看起來像這樣。

Movie (table)
ID int PK
MoveiName nvarchar(100)

Actor (table)
ID int PK
ActorName nvarchar(100)
Movie_ID int FK

這些是我會使用的模型,顯然不完全是這樣,但你會明白我的觀點。

class Movie
{  
    int ID{get;set;}
    string MovieName {get;set;}
    List<Actor> Actors {get;set}
}

class Actor
{
    int ID{get;set}
    string Actorname{get;set}
    Movie Movie{get;set;}
    int Move_ID{get;set;}
}

數據庫首先使我能夠從一個actor查詢電影,但也允許我設置actor的forgien鍵屬性來更新數據庫。 我不能在代碼中首先執行此操作,因為外鍵在模型中不僅僅是對象。 我不想獲取Movie對象並設置屬性,如果我知道我的電影的ID我寧願只設置外鍵而沒有調用來獲取電影。

合理? 大聲笑

我想使用codefirst和實體遷移,但我想要與數據庫相同的能力首先在對象上設置外鍵。

干杯的幫助:-D

首先將代碼更改為此

public class Movie
{  
   int ID{ get; set; }
   string MovieName {get; set; }
   List<Actor> Actors {get; set; }
}

 public class Actor
 {
    int ID{get;set}
    string ActorName{ get; set }
    Movie Movie{ get; set; }
    int MovieID{ get; set; }
 }

按照慣例, EF將知道MovieIDMovie的外鍵

然后將Actor代碼更改為:

public class Actor
{
    int ID{get;set}
    string ActorName{ get; set; }
    Movie Movies{ get; set; }
}

演員出現在很多電影中。 電影有很多演員...... :-)

但回到你的一對多,其中演員只出現在一部電影中 - 如果你真的想要外鍵是Move_ID那么添加一個數據注釋

[ForeignKey("Move_ID")]
Movie Movie{ get; set; }

或者使用FluentAPI配置

   modelBuilder.Entity<Actor>()
               .HasRequired(c => c.Movie)
               .WithMany(d => d.Actors)
               .HasForeignKey(c => c.Move_ID);

暫無
暫無

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

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