2013-09-05 119 views
0

這個想法是一個有傢俱的房間。一些非常簡單的東西。這是Furni型號:如何在實體框架中使用另一個模型中的模型?

public class Furni 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
} 
public class FurniDbContext : DbContext 
{ 
    public DbSet<Furni> Furniture { get; set; } 
} 

當然,它工作正常。它應該與一張桌子相連。現在我正在寫房間模型:

public class Room 
{ 
    public int ID { get; set; } 
    public Furni Furni { get; set; } <<<<< I have no idea how to couple it to FurniDbContext 
} 
public class RoomDbContext : DbContext 
{ 
    public DbSet<Room> Rooms { get; set; } 
} 

任何幫助嗎? :)我希望我已經清楚了。

回答

0

對於每個班級,您不需要單獨的DbContext。這將是這個樣子:

public class Room 
{ 
    public int ID { get; set; } 
    public virtual Furni Furniture { get; set; } // virtual is for lazy loading 
} 

傢俱

public class Furni 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 

    public virtual List<Room> Rooms { get; set; } // if you want to have the relationship both ways 
} 

的DbContext

public class AppDbContext : DbContext 
{ 
    public DbSet<Furni> Furniture { get; set; } 
    public DbSet<Room> Rooms { get; set; } 
} 

希望有所幫助。

+0

謝謝你mmillican,但它仍然無法正常工作。也許我應該讓自己更清楚:我讓Visual Studio Express 2012 for Web爲我自動生成一個Controller,使用Entity Framework,就像我一直這樣做。該控制器是連接到房間模型的控制器。當我在瀏覽器中單擊創建時,沒有表單字段可供填寫。我想它不會將Furni識別爲數據類型,因爲我可以看到「常規數據類型」(如字符串)的表單字段。我想要的是,如果我在Furni字段中輸入了某個東西,那麼我的房間模型會自動將一個furni對象添加到db中。 – deemster

+0

爲了讓自己更清楚:這是我想要的外鍵。如果我的房間控制器爲Rooms DbSet添加了一個新房間,並帶有ID和Furni,我希望它自動將Furni添加到Furniture DbSet中。 – deemster

+0

這聽起來像你正在尋找級聯和使用自定義EditorTemplates。 –