在包含FK列

时间:2016-09-23 21:39:14

标签: sql-server entity-framework entity-framework-core ef-fluent-api

我正在使用EntityFramework Core(代码优先,流畅的API)和SQL Server 2012.我有两个表:Account和AccountType。 AccountType本质上是一个查找表,其中包含映射到枚举的预定义值。它看起来像这样:

Id |类型

0 |个人

1 |储蓄

2 | ...

我的帐户表有几个字段和一个FK到AccountType表。看起来像这样:

Id | AccountTypeId |名称|菲拉

1 | 0 | John Doe A1

2 | 1 | Jane Doe | A1

...

在我的DBContext类中,我试图使AccountTypeId + Name + Fila字段成为唯一索引,因为这3个字段的组合在我的模型中始终是唯一的。当我这样做时:

Entity<Account>.HasIndex(p => new { p.AccountType, p.Name, p.File }).IsUnique();

尝试添加迁移时出现以下错误:

无法将属性“AccountType”添加到实体类型“帐户”,因为实体类型“帐户”上已存在具有相同名称的导航属性。

我不确定这是数据库问题还是EF问题。如果我从索引中删除p.AccountType,我不会收到任何错误。

1 个答案:

答案 0 :(得分:1)

您可以尝试如下所示。

注意:必须使用 primitive data type来创建index

Entity<Account>.HasIndex(p => new { p.AccountTypeId , p.Name, p.File }).IsUnique();