您好,我正在使用实体框架 6.1.1,它支持索引数据注释功能。
我在实体类中定义了一个字段:
[Index("scoreIndex", IsUnique=true)]
public int score{ get; set; }
这工作正常。但是,我试图弄清楚当分数不唯一时如何显示消息。现在它只是抛出一个异常。我尝试了以下方法
[Index("scoreIndex", IsUnique=true, ErrorMessage="Score must be unique")]
但它不包含此 Index 注释类的 ErrorMessage 定义。
您能告诉我如何处理异常消息,以便它优雅地处理它吗?
The IndexAttribute
不是验证属性,因此它没有 ErrorMessage 属性,也没有用于根据一系列有效值对其进行验证的 IsValid() 方法。
这意味着它的设计目的不是像典型的验证属性(必需、最大长度等)那样进行验证。这IsUnique属性仅在表创建过程中用于创建唯一索引。
如果您想使用属性,那么您应该创建一个自定义属性来检查索引的唯一性。该索引当然会继承ValidationAttribute
类,并且必须在内部访问 EF DbContext 以检查属性验证代码中的唯一性。
如果您不喜欢这种数据注释方法,并且它太复杂,那么您可以处理DbUpdateException
由 try-catch 块中的 SaveChanges() 方法抛出,解码错误消息并在视图模型中返回一些友好的内容。
try
{
using (var ac = new ApplicationDbContext())
{
// Add non-unique data
ac.SaveChanges();
}
}
catch (DbUpdateException ex)
{
// Handle index error
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)