簡體   English   中英

添加模型后,如何在不查詢數據庫的情況下從模型獲取主鍵?

[英]How to get a primary key from a model without querying the DB once I've added the model?

這都是可重構的,因此,如果有更好的方法來整體處理這種情況,請告訴我。 真的很羅word,抱歉。


我正在創建一個電影數據庫,並且有3個表格, MoviesGenresMovieToGenre 我已經創建了Genre表,並填充MtG表,我想將genre_idmovie_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

我正在使用的一般過程是以下循環:

  1. 創建Movie實例,不設置movie_id ,因為MVC自己選擇一個

    一種。 movie = new Movie(data1, data2)

  2. Movie實例添加到表

    一種。 db.Movies.Add(movie)

  3. FillMovieToGenreTable()方法中使用最后一個Movie實例的movie_id

    一種。 FillMtGTable(movie)但此時,影片不包含非默認的movie_id ,因此MtG表中的movie_id = 0填充,此處應為movie_id = 1231

  4. 轉到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM