C# 如何在实体框架类中使用远程属性
在我的应用程序中,我使用数据库优先方法创建EDMX文件 我为那里的所有表生成了类 我能够使用注释,如Required、Display、StringLength、RegularExpression等 我知道在我的MVC模型中,我可以使用名为“Remote”的注释来验证我的实体属性 有没有办法在实体类中使用这个“远程”属性?或者可以使用其他方法创建自定义注释 更新: 我有这样的模型C# 如何在实体框架类中使用远程属性,c#,entity-framework,asp.net-mvc-4,data-annotations,C#,Entity Framework,Asp.net Mvc 4,Data Annotations,在我的应用程序中,我使用数据库优先方法创建EDMX文件 我为那里的所有表生成了类 我能够使用注释,如Required、Display、StringLength、RegularExpression等 我知道在我的MVC模型中,我可以使用名为“Remote”的注释来验证我的实体属性 有没有办法在实体类中使用这个“远程”属性?或者可以使用其他方法创建自定义注释 更新: 我有这样的模型 public Exam Exam { get; set; } public TestInfo Test
public Exam Exam { get; set; }
public TestInfo Test { get; set; }
Exam和TestInfo都是实体框架生成的实体类
实体类“Exam”中有一个属性“ExamName”,我想验证它是否有重复的名称。
Remote
是一个数据注释,用于验证用户在UI中输入的内容。它对您的一个操作方法(您可以指定)进行ajax调用,并期望得到一个结果值,告诉您的系统中是否已经存在此数据
您可能需要为视图创建新的视图模型,而不是为视图使用entity framework创建的实体类。然后您可以在其上设置Remote
属性。在动作方法中,您可以处理实际实体以检查数据的存在性
public class RegisterVM
{
[Required]
[Remote("IsAvailable", "Validation")]
public override string UserName { get; set; }
}
现在,您可以使用IsAvailable
操作方法来检查用户名是否存在。另外,请确保您的Register viw已强类型化到此新RegisterVM viewmodel
@model RegisterVM
@using(Html.Beginform())
{
// your form controls
}
在实体类上具有
Remote
属性是没有意义的。它应该在视图模型上。否则你会把事情搞混的 看看这里——我看到了,但这是在MVC项目的模型中实现的。我想在实体类使用实体框架生成的地方实现同样的功能,我想在实体类中实现。不在ViewModel中为什么要在实体类中执行此操作?你们想做什么?我想知道这个名字是否已经存在。如果存在,则应给出错误。因此,使用视图模型,在IsAvailable
操作方法中,您可以查询原始实体以检查其是否存在。@vaibhavshah远程属性还指定验证方法所在的端点。(国际海事组织)把这一点放在模型上是没有意义的。模型不应该关心这个。Viewmodel看起来好多了。