将DataAnnotations添加到自动生成的DBML类? MVC 2.0 ASP.NET

时间:2010-02-17 14:33:47

标签: c# .net asp.net asp.net-mvc vb.net

我担心这样做,因为我的更改将在dbml文件再次自动生成时被覆盖(通常是这样)。

我正在考虑做一个局部课并写出相同的属性来注释它们,但担心它会抱怨重复,而我甚至无法进行实验的原因会让我回到我的问题的第二部分。 ..

...我的dbml文件列表中的可扩展箭头丢失,右键单击并选择“查看代码”只显示一个空的分部类,如下所示...

Partial Class FPDataContext
End Class

所以,我甚至无法查看课程!任何想法都有这些问题吗?

我正在使用VS2010 RC并且我正在开发一个MVC 2.0应用程序,我希望能够使用UI注释,例如[UIHint("RelativeDateTime")]

编辑:

问题解决了,谢谢史蒂夫,这里以我的VB版编辑为例......

Imports System.ComponentModel.DataAnnotations

<MetadataType(GetType(CommentMetaData))> _
Partial Public Class Comment
End Class

Public Class CommentMetaData
    <UIHint("PostedSince")> _
    Public Property DateAdded() As DateTime

End Class

2 个答案:

答案 0 :(得分:7)

您可以使用DataAnnotations的“伙伴类”功能来定义您的类型的验证。这基本上意味着您在另一个类上定义验证,但您也可以在现有类的“内部”定义此类:

[MetadataType(typeof(CommentMetaData))]
public partial class Comment {
}

public class CommentMetaData {
    [StringLength(50),Required]
    public object Name { get; set; }
    [StringLength(15)]
    public object Color { get; set; }
    [Range(0, 9999)]
    public object Weight { get; set; }
}

答案 1 :(得分:1)

可能的解决方案是http://linqtometadataaddin.codeplex.com

  

Linq To MetaData AddIn是一个生成的Visual Studio 2010工具   dbml文件的metadatatype类。建议添加此内容   Asp.net DynamicData应用程序