我正在使用EntityFramework Core(代码优先,流畅的API)和SQL Server 2012.我有两个表:Account和AccountType。 AccountType本质上是一个查找表,其中包含映射到枚举的预定义值。它看起来像这样:
0 |个人
1 |储蓄
2 | ...
我的帐户表有几个字段和一个FK到AccountType表。看起来像这样:
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,我不会收到任何错误。
答案 0 :(得分:1)
您可以尝试如下所示。
注意:您必须使用 primitive data type
来创建index
。
Entity<Account>.HasIndex(p => new { p.AccountTypeId , p.Name, p.File }).IsUnique();