这都是可重构的,所以如果有更好的方法来处理整体情况,请告诉我。这话太罗嗦了,抱歉。
我正在创建一个电影数据库,我有 3 个表Movies
、Genres
和MovieToGenre
. 我已经创建了Genre
表格,并且为了填充MtG
表格,我试图将 agenre_id
与 a相关联movie_id
,我认为这是一对多的关系,所以它会有类似下面的内容
movie_id | genre_id
1 56
1 786
2 232
2 656
但我的问题是,为了填充该表,我需要模型中movie_id
的。Movie
我假设一旦我将 ' 添加Movie
到Movies
表中,模型将追溯更新其movie_id
属性,但情况似乎并非如此,因为MovieToGenre
表中填充了movie_id
' 等于 0,即默认值。该Movies
表正在使用正确的movie_id
,因此只需告诉我的FillMovieToGenre
方法哪部电影有什么movie_id
。
我正在使用的一般过程是以下循环:
创建
Movie
实例,而不是设置movie_id
,因为 MVC 自己选择一个一种。
movie = new Movie(data1, data2)
将
Movie
实例添加到表一种。
db.Movies.Add(movie)
在 方法中使用最后一个
Movie
实例。movie_id
FillMovieToGenreTable()
一种。
FillMtGTable(movie)
但是在这一点上,电影不包含非默认值movie_id
,因此MtG
表中填充了movie_id = 0
,它应该在哪里movie_id = 1231
等。转到 1。
tl;dr 可以获得最近添加的模型的主键吗?似乎进行新查询不是一个好主意,因为我正在循环遍历我需要添加的所有电影,并且我认为新查询会减慢进程。
Movie
在课堂的相关部分编辑
public class Movie
{
[Key]
public int movie_ID { get; set; }
[DisplayName("Title")]
public string title { get; set; }
}
public class Genre
{
[DisplayName("Genre ID")]
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int genre_ID { get; set; }
[DisplayName("Genre")]
public string genre_string { get; set; }
}
public class MovieToGenre
{
[Key]
public int movie_to_genre_ID { get; set; }
public virtual int movie_ID { get; set; }
public virtual int genre_ID { get; set; }
}