我希望有人可以通过MVC / EF为我提供与实体之间的0..1关系相关的内容。
在我的[假设]数据库中,我有一张颜色表和一张水果表。我还有一个查找表,用于管理颜色和水果之间的关系,如下所示
颜色
ID Name
1 Red
2 Green
3 Yellow
水果
ID Name
1 Banana
2 Strawberry
查找
ColourId FruitId
1 2
3 1
假设我想使用MVC视图在表中显示此信息,并希望它看起来如下:
Colour Fruit
Red Strawberry
Green NULL
Yellow Banana
我可以将上面的代表表示为MVC中的模型,然后创建一个包含模型的视图模型:
public class FruitViewModel
{
public List<Colour> colours {get;set;}
public List<Fruit> fruits {get;set}
}
我从哪里开始?我会为水果颜色创建第三个模型并将其添加到视图模型中吗?这包括一个NULL水果吗?
答案 0 :(得分:1)
您不需要为交叉引用(查找)表创建模型。
这些都是您的模型所需要的:
public class Fruit
{
public int Id { get; set; }
public int ColorId { get; set; }
public Color Color { get; set; }
}
public class Color
{
public int Id { get; set; }
public int? FruitId { get; set; }
public Fruit Fruit { get; set; }
}
然后,根据您的映射方式(FluentApi与数据属性),您只需在那里建立关系。
例如,在您的水果配置中:
HasRequired(f => f.Color)
.WithOptional(c => c.Fruit)
.Map(f =>
{
f.ToTable("Lookup");
f.MapLeftKey("ColorId");
f.MapRightKey("FruitId");
});