[英]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將知道MovieID
是Movie
的外鍵
然后將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.