我的数据库有许多独特的约束条件。
我知道实体框架对它们一无所知。所以我需要手动将它们添加到模型中。但是在
System.ComponentModel.DataAnnotations
没有唯一关键字。
我创建了新属性:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = true)]
public class UniqueKeyAttribute : Attribute
{
}
并将其添加到我的模型中:
[MetadataType(typeof(DeviceInstance))]
public partial class DeviceInstance
{
public int Id { get; set; }
[Required]
public int DeviceId { get; set; }
[Required]
[UniqueKey]
[MaxLength(50)]
public string SerialNo { get; set; }
[Required]
public System.DateTime CreationDate { get; set; }
}
即便如此
即使表中已存在该值,Model.IsValid
也始终返回true。
我应该编写什么代码来改变这种行为?
答案 0 :(得分:3)
您的问题的一个简单答案是Entity框架不支持唯一键,因此唯一的方法是设置数据库中的唯一约束(实际上就是这样)。通过这样做,当您尝试在DB中插入/更新新行时,如果缺乏唯一性,则会抛出适当的异常,然后您可以捕获并处理这些异常。