假设我有一个这样的实体
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的记录也没有问题。
我可以检查所有其他记录是否重复,但是正确的方法是强制数据库生成错误。
感谢所有人。
答案 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; }