如何避免首先基于EF代码中的多个字段插入重复的条目

时间:2019-03-01 17:38:21

标签: c# database entity-framework ef-code-first

假设我有一个这样的实体

public class Example
{
    [Key]
    public int ExampleId { get; set; }
    public string Field1 { get; set; }
    public string Field2 { get; set; }
    public string OtherField1 { get; set; }
    public string OtherField2 { get; set; }
}

我需要先使用EF代码创建表。

我需要防止添加具有重复的Field1和Field2的记录,重复的OtherField1和OtherField2没有问题。那些只具有Field1但没有Field1和Field2的记录也没有问题。

我可以检查所有其他记录是否重复,但是正确的方法是强制数据库生成错误。

感谢所有人。

2 个答案:

答案 0 :(得分:0)

只需在插入之前检查重复项(假设MyExample是您要插入的新记录):

if(!context.Examples.Any(x => x.Field1 == MyExample.Field1 && x.Field2 == MyExample.Field2)
      context.Examples.Add(MyExample);
      context.SaveChanges();

答案 1 :(得分:0)

这是我们可以使用EF在列组合上创建唯一键的方式

[Index("IX_UniqueFields", 1, IsUnique = true)]
public int Field1 { get; set; }

[Index("IX_UniqueFields", 2, IsUnique = true)]
public int Field2 { get; set; }