entity-framework - 我可以强制使用 Entity Framework 的多重性/关联吗?

标签 entity-framework c#-4.0 entity-framework-4

我有下面的表结构, Entity Framework 以一对多的形式正确返回:

Patient
{
   PatientId PK
}

Death
{
   DeathId PK
   PatientId FK
}

不幸的是,这个 DB 设计是错误的,因为每个 Patient 只能有一个 Death。设计应该是这样的:

Death
{
   PatientId PK
}

但是,这是一个生产系统,无法更改数据库。我正在编写一个新的 ASP.Net MVC 前端,因此我正在使用 Entity Framework 重写 DAL 层。

当我调用 Patient.Death 时,我得到了一个 Death 的集合。我只希望它返回一个或 null Death(因为 Patient 可能还没有死)。

所以,我涉足模型并尝试将关联的 End2 多重性更改为:0..1(零或死亡之一),但是当我构建项目时,我得到错误:

Multiplicity is not valid in Role 'Death' in relationship 'RefDeath23'. Because the Dependent Role properties are not the key properties, the upper bound of the multiplicity of the Dependent Role must be *.

谁能告诉我如何(如果可能的话)将其强制为零关联或一关联?

最佳答案

你能让 EF 做你想做的事吗?当然;就你的数据库元数据向 EF 撒谎。您可以通过针对“正确”设计的数据库生成数据库或手动编辑 SSDL 来执行此操作。

但是,在执行此操作之前请三思。

我怀疑 EF 使这变得困难,这是有充分理由的:无论好坏,您的数据库都允许这样做。通过创建一个不存在的模型,如果您在野外遇到这种数据情况,您将为自己设置运行时错误,因为无法将其加载到您的模型中。在您(从外部)修复数据库中的错误数据之前,您根本无法与这样的人一起工作。

关于entity-framework - 我可以强制使用 Entity Framework 的多重性/关联吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3382713/

相关文章:

visual-studio-2010 - 不允许访问数据库文件。

c# - Entity Framework 4 : How to turn a string into an object for . OrderBy(p => p.fieldname)?

c# - "Collection was of a fixed size"带有 POCO 的 EF4 异常

sql-server - 两个不同列的 SUM 和 DISTINCT

c# - 获取 Entity Framework 连接字符串

c# - Entity Framework 4.0 - 版本控制

c# - 使用反射创建位于不同项目中的类的对象?

c# - C# 中访问本地事件日志

entity-framework - 如何使用EF4 Fluent API将删除级联到链接表中?

c# - 无法在 Entity Framework 中创建类型为 'System.Object' 的常量值