我们正在使用Entity Framework和ASP.NET MVC构建一个站点,我目前正在研究我们的模型,确保所有字符串属性都具有相应的验证属性,并且它变得相当繁琐。
大多数情况下,我们的视图是从视图模型中填充的 - POCO类被定义为为特定视图提供后备数据。在我们使用EF生成的类来填充视图的极少数情况下,我们使用MetadataTypeAttribute为每个类指定元数据类。
我们常常有许多视图模型包含相同的EF类 - 暴露它们在特定视图中使用的那些部分。因此,我们通常会在不同的模型中多次出现相同的属性。这意味着我们需要在多个位置指定相同的StringLengthAttributes。如果我们不小心指定了不同的字符串长度,对于不同模型中的相同属性,它将是一个我们无法轻易捕获的错误。
我想知道的是我们是否可以使用MetadataTypeAttribute - 我们不是在每个属性上指定单独的验证属性,而是在任何地方创建一个元数据类,其中包含我们在整个系统中使用的每个属性的适当属性,并应用它使用MetadataTypeAttribute创建每个模型。
在元数据类中指定不属于它所应用的类的属性会有问题吗?一切都很好,但不能保证问题。
将属性应用于主类中的属性以及元数据类中的匹配属性时会发生什么?它们都适用了吗?如果同时使用相同的属性,哪一个占优势?
在我当前版本的.NET中测试工作原理是很容易的,但我已经学会了不要相信这一点。我对定义的行为更感兴趣,我可以指望在未来的版本中不要改变,而不是现在的作用。
除了这是否有效之外,这是一个好主意吗?