代码之家  ›  专栏  ›  技术社区  ›  Erx_VB.NExT.Coder

向自动生成的DBML类添加数据注释?MVC 2 ASP.NET

  •  4
  • Erx_VB.NExT.Coder  · 技术社区  · 15 年前

    我担心这样做,因为当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 回复  |  直到 13 年前
        1
  •  7
  •   Steven    15 年前

    您可以使用dataAnnotations的“buddy class”功能来定义类型的验证。这基本上意味着您在另一个类上定义了验证,但是您也可以在现有类内定义这个类:

    [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; }
    }
    
        2
  •  1
  •   Brad Mace Mike King    13 年前

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

    Linq to Metadata加载项是一个生成 DBML文件的Metadatatype类。建议将此加载项用于 ASP.NET动态数据应用程序