Entity Framework Code First - 非主键字段的外键

7

我有两个表格,看起来像这样:

dbo.ReviewType
    ReviewTypeId INT PRIMARY KEY
    ShortName CHAR(1) - Unique Index
    Description

dbo.Review
   ReviewId INT PRIMARY KEY
   ReviewType_ShortName CHAR(1) - FK to ReviewType
   ...

每个评论都有一个评论类型。
一个评论类型可以与多个评论相关联。

我在使用Code First Fluent API时遇到了麻烦。似乎它不喜欢我使用的外键没有映射到主键。我正在使用外键来唯一约束/索引,而不是主键。

我应该如何在C#中正确地映射这个实体框架?

需要注意的是,我现在这样做会出现以下错误:

System.Data.Edm.EdmAssociationConstraint:参照约束中从属角色中所有属性的类型必须与主角色中相应属性的类型相同。实体“Review”上的属性'ReviewTypeCode'的类型与实体'ReviewType'上的属性'Id'的类型在参照约束'ReviewType_Reviews'中不匹配。


1
你为什么要选择这种方法?添加一个ReviewTypeId的外键,而不是ShortName,将解决你的问题。 - Pedro Costa
因为这不在我控制范围内。我意识到这可能不是最好的解决方案,但我没有设计数据库。我正在尝试使用现有的模式映射模型,使用Fluent API。 - Dismissile
1个回答

6

当前版本的EF不支持唯一索引,并且它无法基于非主要唯一键映射关系。


这个还是这样吗?我看过一篇文章 http://blogs.southworks.net/dschenkelman/2012/08/18/creating-indexes-via-data-annotations-with-entity-framework-5-0/ ,帮助我得到了唯一索引。然而,它无法基于唯一键创建关系。难道没有一个新版本的 EF 支持这个吗? - Mounhim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接