我正在使用EntityFramewok 7,我需要唯一的字段,但不是键。例如,我有产品型号:
public class Product<TKey> : Entity<TKey> where TKey : IEquatable<TKey>
{
public string Id { get; set; }
public string Name { get; set; }
}
我的数据库中有三个产品(名称为: product1 , product2 , product3 )。我希望Name
是唯一的。我希望能够更改名称值,如果它是另一个产品名称,我想弄错(事实上我希望能够将 product2 更改为 product5 ,但如果我尝试将 product2 更改为 product3 ,我想犯错误。我试图以这种方式实现:
builder.Entity<Product<string>>(b =>
{
b.HasAlternateKey(p => p.Name);
});
在这种情况下,我根本无法修改Name
字段。当我尝试用另一种方法实现这个时:
builder.Entity<Product<string>>(b =>
{
b.HasIndex(p => p.Name).IsUnique();
});
当我将 product2 更改为 product3 时,这段代码我没有错误,数据库已更新。
我该如何实现这样的功能?对于我在内存数据库中使用的所有测试。也许是这个原因?