2

首先在实体框架代码中,当我想为普通的一对多外键创建映射时,我使用

HasRequired(a=>a.County)
  .WithMay(b=>b.Cities)
  .HasForeignKey(a=>a.CountCode);

现在,当我尝试创建一个一对一的映射时,它会变成这样:

HasRequired(a=>a.County)
  .WithOptional(b=>b.ConnectedCounty)
  .Map(a=>a.MapKey("CountyCode"));

为什么我必须在这个表达式中使用像CountyCode这样的字符串?有没有办法创建没有字符串的映射,只有 linq 表达式?

4

1 回答 1

2

原因是在定义一对一关系时不应该使用它,因为通过使用它,您将回到在数据库中定义一对多关系。只有当依赖实体中的 FK 也是它的 PK 时,EF 才使用真正的一对一关系。这是您可以确定主体实体永远不会被多个依赖实体引用的唯一情况(因为 EF 不支持数据库唯一键)。

如果您使用您的代码,您将定义单独的 FK,它会“工作”,但不会在数据库中的列上自动创建唯一键。

于 2012-11-27T10:39:37.500 回答