Asp.net mvc 3 POCO-如果POCO意味着纯.net类,只有属性,我可以在MVC中编写验证
非常新的POCO,找到一些谷歌链接,但发现许多不同的故事。 有些与实体框架、延迟加载等相关,有些说这是一个纯.det类。 至少MSDN 从MSDN定义POCO的链接: 我相信MSDN(一个简单的定义),并假设它是一个纯.NET类 现在让我来谈谈重点。 如果它是纯.net类,内部只有属性,那么它与MVC中的“MODEL”是等边的。 例如 在这个层次上,我很清楚。现在,如果我想在模型中编写自己的验证(条件验证) 使用 验证属性 或 IValidatableObject 如果我没有错的话,这将不是纯粹的.net类。 例子。。。。(如下图所示)Asp.net mvc 3 POCO-如果POCO意味着纯.net类,只有属性,我可以在MVC中编写验证,asp.net-mvc-3,model-view-controller,poco,msdn,Asp.net Mvc 3,Model View Controller,Poco,Msdn,非常新的POCO,找到一些谷歌链接,但发现许多不同的故事。 有些与实体框架、延迟加载等相关,有些说这是一个纯.det类。 至少MSDN 从MSDN定义POCO的链接: 我相信MSDN(一个简单的定义),并假设它是一个纯.NET类 现在让我来谈谈重点。 如果它是纯.net类,内部只有属性,那么它与MVC中的“MODEL”是等边的。 例如 在这个层次上,我很清楚。现在,如果我想在模型中编写自己的验证(条件验证) 使用 验证属性 或 IValidatableObject 如果我没有错的话,这将不是纯
公共类向导:ValidationAttribute,IValidatableObject
{
公共覆盖布尔值有效(对象值)
{
返回base.IsValid(值);
}
公共IEnumerable验证(ValidationContext ValidationContext)
{
抛出新的NotImplementedException();
}
[必需(ErrorMessage=“必需全名”)]
[StringLength(20,ErrorMessage=“用户名必须少于20个字符。”)]
公共字符串用户名{get;set;}
[必需(ErrorMessage=“电子邮件必需”)]
[RegularExpression(“.+@.+\\..+”,ErrorMessage=“电子邮件无效。”)]
公共字符串电子邮件{get;set;}
[必需(ErrorMessage=“需要密码”。)]
[StringLength(20,ErrorMessage=“最多20个字符允许”)]
[数据类型(数据类型.密码)]
公共字符串密码{get;set;}
}
这还是POCO吗?
如果是,它如何包含方法。(与MSDN链接相反)
如果没有,我应该在哪里写下我的验证代码(当然是MVC中的条件验证)。
通过一个例子来寻找一个非常好的答案。POCOs意味着您不必为了实现功能而从某个框架定义的基类继承。基本上,您可以自由地设计类层次结构 您可以添加自己的方法,无论是it验证还是一些业务逻辑
一个反例是从实体框架中实体的类继承。POCOs意味着您不必为了实现功能而从框架定义的基类继承。基本上,您可以自由地设计类层次结构 您可以添加自己的方法,无论是it验证还是一些业务逻辑
一个反例是从实体框架中实体的类继承。链接的文章没有说POCO不能有方法。有关POCO的详细说明,请访问: 。。。该术语用于将简单对象与真实对象进行对比 设计用于复杂、特殊的对象框架,如 作为ORM组件。另一种说法是POCO是对象 不受特定继承或属性的限制 框架 POCO可以有您需要的所有方法或逻辑。POCO和非POCO之间的区别在于,即使不使用特定框架(EF),POCO也是可以始终使用的类,但非POCO只能在链接特定框架或更糟糕的初始化和使用特定框架时使用
对于纯粹主义者来说,数据注释也违反了POCO,因为它们也需要特定的API,但在实用方法中,数据注释是可以的(EF代码中首先用于定义映射的特殊注释除外),因为它们只对实体的验证方式产生依赖性,而对实体的持久化方式没有依赖性(非POCO EF对象)。对持久性的依赖可能要求在您从未期望使用EF的程序集中引用EF—例如,MVC应用程序之类的表示层。链接文章没有说POCO不能有方法。有关POCO的详细说明,请参见: …该术语用于将简单对象与 设计用于复杂、特殊的对象框架,如 作为ORM组件。另一种说法是POCO是对象 不受特定继承或属性的限制 框架 POCO可以有您需要的所有方法或逻辑。POCO和非POCO之间的区别在于,即使您不使用特定框架(EF),POCO也是您可以始终使用的类,但非POCO只能在链接特定框架或更糟糕的初始化和使用时使用
对于纯粹主义者来说,数据注释也违反了POCO,因为它们也需要特定的API,但在实用方法中,数据注释是可以的(EF代码中首先用于定义映射的特殊注释除外),因为它们只对实体的验证方式产生依赖性,而对实体的持久化方式没有依赖性(非POCO EF对象)。对持久性的依赖可能要求在程序集中引用EF,而在这些程序集中,您永远不会使用EF—例如,MVC应用程序之类的表示层。我个人喜欢使用定义该模型所需的基本属性创建POCOs分部类,然后将验证逻辑放在单独的类中。例如:
public partial class Wizard
{
public string UserName { get; set; }
public string EmailAddress { get; set; }
}
然后,如果我想将验证添加到用户名
:
public partial class Wizard
{
[Required]
[StringLength(20)]
public string UserName { get; set; }
}
我知道编译器只是合并了这两个类,你可能在重复属性,但我认为这是最干净的方法
另一种选择是使用属性。我个人喜欢使用定义该模型所需的基本属性创建POCOs分部类,然后将验证逻辑放入单独的类中。例如:
public partial class Wizard
{
public string UserName { get; set; }
public string EmailAddress { get; set; }
}
然后,如果我想将验证添加到用户名
:
public partial class Wizard
{
[Required]
[StringLength(20)]
public string UserName { get; set; }
}
我知道编译器只是合并了这两个类,你可能在重复属性,但我认为这是最干净的方法
另一种选择是使用属性。这不是我要寻找的答案?你在两边都说了(我可以添加逻辑,另一个是不继承类…),siml