我会更改属性名称和类名称以使其更具可读性。如果您将Genre
表的主键列名称保留为GenreId
,则 EF Codefirst 将创建名称为Genre_GenreId
!! 的外键(在电影中)表。所以我将 Movie 类的主键列名称更改为 simple 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; }
}
现在在您的 UI 中,您提供了一个下拉列表,其中列出了可用的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();
}
您首先从 db 上下文中加载 Genre 对象,并将其设置为Genres
新电影对象的属性。我们正在使用该Find
方法找出其主键是传递给该函数的值的项目(在本例中为 2)。这将在电影表中添加一条新记录,并将GenreID
列值设置为,假设您在 Genre 表中2
有一条带有 ID 的记录2