2017-05-06 34 views
0

我是MVC的新手,這是我的功能。有三個表(Order,OrderNotes,Notes),ID是他們的主鍵。一個訂單可以有很多註釋,表OrderNotes具有外鍵OrderID(來自預訂表)和NotesID(來自Notes表)。我想有一個訂單編輯頁面來顯示單個訂單(名字,姓氏),還會顯示其備註列表。這裏是我的數據庫結構:多表更新MVC .net

  1. 訂房表: {ID, 名字, 姓氏 }

  2. BookingNotes表: {ID, BookingID, NotesID }

  3. 注意事項表: {ID, 注意名稱, StatusID }

那麼,如何實現Notes的列表,因爲它來自多個表?這將能夠創建新注,刪除現有注意列表中的行記錄,而不是編輯。 Linq用於數據庫查詢。謝謝。

+0

請顯示一些代碼來幫助你 –

回答

0

這將是一個更好的主意,只有2個表:

public class Book 
{ 
    public int ID { get; set; } 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    // Navigational properties 
    public virtual List<Note> Notes { get; set; } 
} 

public class Note 
{ 
    public int ID { get; set; } 
    public int BookID { get; set; } 
    public string NoteName { get; set; } 
    public int StatusID { get; set; } 

    // Navigational properties 
    public virtual Book Book { get; set; } 
    public virtual Status Status { get; set; } 
} 

第三個表是有用的,當你要重複使用相同的Note爲不同的預訂。不過,我認爲情況並非如此。

所以檢索您的上下文數據請確保您有DbSet<Book>

public class ApplicationDbContext : DbContext 
{ 
    public virtual DbSet<Book> Bookings { get; set; } 
} 

在您的控制器(或更好的在庫類):

var BookingID = 10; // this is parameter passed to the function 
var myBooking = this.dbContext.Bookings 
    .Include(p => p.Notes) 
     .ThenInclude(p => p.Status) 
    .FirstOrDefault(p => p.ID == BookingID); 

地圖檢索預訂到ViewModel ,把它傳遞給視圖,你很好去。

+0

非常感謝克里斯蒂安,它是這樣工作的。 – Julia