我正在尝试对我的 Linq to SQL 对象实施数据注释。.dbml 文件已生成,我不确定如何在不接触生成的源代码的情况下向对象添加数据注释。
我试图将数据注释添加到对象的单独部分类中,但它无法识别它,也没有 Intelli 感知。
我正在尝试对我的 Linq to SQL 对象实施数据注释。.dbml 文件已生成,我不确定如何在不接触生成的源代码的情况下向对象添加数据注释。
我试图将数据注释添加到对象的单独部分类中,但它无法识别它,也没有 Intelli 感知。
正如我在这个问题的原始答案中所说,您应该使用界面。在我的(标记为已接受)之后发布的答案说要使用课程。这不太好。接口是更好的选择,原因如下:
对于名为“User”的类,为其创建一个接口(例如“IUser”),然后更新部分 User 类的定义,如下所示:
[MetadataType(typeof(IUser))]
public class User : IUser
然后,在您的 IUser 界面中,将适当的 Data Annotation 属性添加到属性中:
[Required]
[StringLength(50, ErrorMessage = "Username cannot exceed 50 characters")]
string Username { get; set; }
对于名为“User”的类,为其创建一个接口(例如“IUser”),然后更新部分 User 类的定义,如下所示:
[MetadataType(typeof(IUser))]
public class User : IUser
然后,在您的 IUser 界面中,将适当的 Data Annotation 属性添加到属性中:
[Required]
[StringLength(50, ErrorMessage = "Username cannot exceed 50 characters")]
string Username { get; set; }
Linq to SQL 将对象类作为部分生成。实现数据注释的一种简单方法是创建自己的对象分部类,将 [MetadataType(typeof(YourDataAnnotationClass))] 放置在您创建的分部类上。
例子:
// Linq to SQL Class
public partial class Article
{
public string Title { get; set; }
...... etc
}
使用您要验证的每个字段的元数据创建您自己的 MetaData 类
public class MyMetaDataClass
{
[Required]
[Range(5,20)]
public string Title { get; set; }
}
为要添加元数据的 Object 类创建一个 Partial Class,在本例中为 Articles 类:
[MetadataType(typeof(MyMetaDataClass))]
public partial class Article { }
注意:您不需要在类中指定任何内容,只需指定元数据类型即可。
谢谢,但问题是 MS 将 MetadataTypeAttrubute 的原型定义为
[AttributeUsageAttribute(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public sealed class MetadataTypeAttribute : Attribute
所以,你必须使用类而不是接口
来自中国森林李:李晓强 xiaoqianglinsen@163.com (MSN) lixiaoqiang@webservice.com.cn