![](/img/trans.png)
[英]When removing model data from a db everything but the primary key is getting deleted, how can i remove all of it?
[英]How to get a primary key from a model without querying the DB once I've added the model?
這都是可重構的,因此,如果有更好的方法來整體處理這種情況,請告訴我。 真的很羅word,抱歉。
我正在創建一個電影數據庫,並且有3個表格, Movies
, Genres
和MovieToGenre
。 我已經創建了Genre
表,並填充MtG
表,我想將genre_id
與movie_id
關聯起來,我認為這是一對多的關系,因此它將具有以下內容:它
movie_id | genre_id
1 56
1 786
2 232
2 656
但是我的問題是,為了填充該表,我需要Movie
模型中的movie_id
。 我假設一旦將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)
在FillMovieToGenreTable()
方法中使用最后一個Movie
實例的movie_id
。
一種。 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; }
}
在EF中,您保存更改后即運行后
db.Movies.Add(movie)
db.SaveChanges();
EF應該自動為您提供填充的ID
int movie_id=movie.movie_id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.