【发布时间】:2013-08-14 11:58:57
【问题描述】:
取下面的伪代码数据库
table Foo
{
FooID int not null,
name varchar not null
}
table Bar
{
BarID int not null,
name varchar not null
}
table Waa
{
WaaID int not null,
name varchar not null
}
table Link
{
LinkID int not null,
FooID int null,
BarID int null,
WaaID int null,
Description varchar not null
}
链接表的目的是允许我将实体链接到一个表中,而无需多个Foo_Bar_Link、Foo_Waa_Link 等表。
我正在 EntityFramework v5 中对这个数据库进行建模。因此,我希望能够指定Foo 和Link 之间的一对多关系,以便我可以获得与给定Foo 关联的所有链接。
问题
EntityFramework Designer 只允许在外键不为空的情况下存在一对多关系。我希望 Foo 有一个导航属性 Associations,它可以获取所有带有 FooID = Foo.FooID 的 Association 实体。作为说明,我正在使用设计器。
【问题讨论】:
-
你能展示你的Link模型吗?你可能还想看看这个post
-
我正在使用 EF 设计器创建整个东西,所以我没有剪切我自己的模型代码。如果需要,我可以粘贴它...
-
见simple-talk.com/sql/database-administration/… - “一环统治他们,在黑暗中束缚他们”
-
其实Colin,他说的是一个没有明确关系的表。在这种情况下,它相当于拥有一个带有
Table和Column值的Generic表(例如"Foo": 1、"Bar":2),因此可以使用WHERE Table = 'Foo' and Value = 1懒惰地加入表非常糟糕的做法。表设计明确(此 foo 与 This Bar 相关) -
我尝试过设计器,发现它太局限了。我很快就切换到代码优先,从那以后就再也没有回头。在代码优先中,可空外键使用 Model 类中的可空属性建模。就这么简单。
标签: c# sql entity-framework database-design entity-framework-designer