EF 7.唯一值

时间:2016-04-22 12:48:14

标签: entity-framework asp.net-core entity-framework-core

我正在使用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 时,这段代码我没有错误,数据库已更新。

我该如何实现这样的功能?对于我在内存数据库中使用的所有测试。也许是这个原因?

0 个答案:

没有答案