【问题标题】:Create Association Model First With Ignoring Certain PKs首先创建关联模型,忽略某些 PK
【发布时间】:2017-09-07 04:31:03
【问题描述】:

我有以下表结构

设施

  • PK 设施 ID
  • 帐户ID

帐户

  • PK 名称ID
  • PK 账户ID

我无法触及数据库,因此我的更改需要在实体框架中进行。本质上 AccountIDs 是链接的,所以我想在它们之间创建一个关联。因此,当我创建关联时,我将 AccountIDs 映射在一起,但是我无法将 FacilityID 映射到任何东西,而将 NameID 映射到任何东西,所以当我保存 Visual Studio 时抱怨映射设置不正确。

我的主要问题是如何忽略 FacilityIDNameID 的映射?我尝试将[NotMapped] 添加到FacilityIDNameID,但这不起作用。我还尝试为 FacilityAccounts 创建一个标量属性,并使用 Referntial Constraint 来映射它们,但是当我尝试映射表映射下的列时,我添加的列没有出现这也会导致 VS 抱怨。

这是我的表格,我删除了大部分字段,因为它们是不必要的

【问题讨论】:

  • 我不确定,但我认为你误解了映射的概念,它是关于实体对象和数据库之间的链接,所以 NameID 应该映射到数据库中的 NameID
  • 我指的是两个表之间的映射。添加关联时似乎必须映射PK。但是,我不想映射 FacilityID 和 AccountID,因为没有什么可以映射到的。
  • 可以分享一下表格的DDL吗? “两张表之间的映射”是什么意思?
  • @DavidBrowne-Microsoft 添加了上图,两个表之间的映射表示我要在FacilityAccountIdAccountAccountID 之间创建的关联

标签: c# entity-framework


【解决方案1】:

假设 Account.AccountID 是唯一的(即 Account 中没有两行实际上具有相同的 AccountID),只需将其声明为 Account 实体上的唯一 Key Property。

实体的 Key 不必在数据库中声明为 PK。但是每个实体只能有一个密钥(密钥当然可以有多个列,并且 EF Core 确实支持备用密钥)。实体 Key 应该是唯一的,并且应该在数据库中的相应列上具有唯一索引,但这不是 EF 强制执行的。

【讨论】:

  • 来自FacilityFacilityId 怎么样? VS 仍然抱怨 Association End 'Facility' 没有被映射。
  • 没有 DDL,没办法说。使用 Code First 并在类上配置映射通常更容易,完全跳过 EDMX。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-12
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
  • 2021-12-05
相关资源
最近更新 更多