我會改變屬性名稱和類名,使其更具可讀性。如果您將Genre
表的主鍵列名稱保留爲GenreId
,EF Codefirst將創建名稱爲Genre_GenreId
!!的外鍵(在電影中)。所以我改變電影類簡單地ID
的主鍵列名,因此,它會生成外鍵列Genre_ID
public class Movie
{
public int ID { get; set; }
public String MovieName { get; set; }
public virtual Genre Genres { get; set; }
}
public class Genre
{
public int ID { get; set; }
public String Name { get; set; }
}
現在,在你的用戶界面,你給一個下拉列表,它裏面列出了Avaialble Genre
記錄。當用戶提交表單,將它保存這樣
using (YourDBContext dbContext = new YourDBContext())
{
Movie movie= new Movie { MovieName = "Read it from UI Please" };
var genr=dbContext.Find(2);
// TO DO : replace 2 by selected value from dropdown in the UI
movie.Genres =genr;
dbContext.Movies.Add(movie);
dbContext.SaveChanges();
}
您從您的分貝範圍內首次加載類別對象,並設置爲新的電影對象的Genres
財產。我們使用Find
方法來查找主鍵是傳遞給該函數的值的項目(在本例中爲2)。這將添加一個新的記錄電影臺,並設置GenreID
列值作爲2
,假設你在你的流派表
澄清:「movie.Genres = new Genre {ID = 2};」是創建一個新的對象發送到流派風格,因爲流派是另一個表的對象? – user2182715 2013-03-27 14:58:02
我不能讓它添加電影,除非我把:movie.Genres = new Genre {ID = 2,Name =「whatever」};然後創建一個新的流派記錄 – user2182715 2013-03-27 16:59:57
我試着只設置ID,數據庫不會將它放在SaveChanges .....我添加了名稱以查看它的需求,就是這樣。 – user2182715 2013-03-27 18:26:24