在实体框架的数据库优先方法中手动创建0..1到0..1关系

时间:2019-06-19 13:10:48

标签: entity-framework entity-relationship ef-database-first multiplicity

在我的数据库中,我有一个表,其中包含一个路径列表,一个用于装载托架的表和一个连接表。后者包含何时哪个拖车在哪个装载区的列表。到目前为止,一切都很好。

我还有一个名为CurrentLoadingBayAssignment的数据库视图。它包含所有装卸区的列表以及对拖车的可空引用。如果现在在装货区有一辆拖车,它将包含其ID,否则为NULL。

如您所见,这是一个0..1到0..1的关系。特定的拖车 现在可以在一个装货区,也可以在其他地方。每个装货区 只能有一个拖车,或者是免费的。

因此,我在表和视图之间手动添加了与数据模型的关系。我将两端的多重性设置为0..1,这对我来说似乎很合逻辑。但是,这似乎是不允许的。我收到错误消息#113,因为ID_LoadingBay列不是主键,所以视图末端的多重性必须设置为*。实际上,甚至不可能,因为该字段可以为空。

所以我的下一个想法是在视图的ID_LoadingBay字段上设置唯一约束,但是您不能在数据库端对视图设置约束,并且在使用时我也看不到设计器端的选项数据库优先方法。 “代码优先”似乎有一个IsUnique属性/注释,但我不使用这种方法。

有没有一种方法可以强制Visual Studio忽略此错误?还是让VS相信某个隐藏的功能,即视图的字段在设计上是唯一的?我可以通过将多重性设置为*并使用SingleOrDefault()?访问该字段来解决该问题,但我希望更像我的数据库。那是0..1到0..1的关系。

您对实现该目标有任何想法吗?

0 个答案:

没有答案