2013-09-05 45 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。 –