在哪里放置数据注释标签?

时间:2011-01-10 21:43:41

标签: c# linq-to-sql asp.net-mvc-2

我正在通过pro asp.net mvc 2.0框架,似乎他将他的数据注释标签放在也生成linq到sql的类上。

  [Table(Name = "Products")]
    public class Product
    {
        [HiddenInput(DisplayValue = false)]
        [Column(IsPrimaryKey = true, IsDbGenerated = true, AutoSync = AutoSync.OnInsert)]
        public int ProductID { get; set; }

        [Required(ErrorMessage = "Please enter a product name")]
        [Column] public string Name { get; set; }

        [Required(ErrorMessage = "Please enter a description")]
        [DataType(DataType.MultilineText)]
        [Column] public string Description { get; set; }

        [Required]
        [Range(0.01, double.MaxValue, ErrorMessage = "Please enter a positive price")]
        [Column] public decimal Price { get; set; }

        [Required(ErrorMessage = "Please specify a category")]
        [Column] public string Category { get; set; }

        [Column]
        public byte[] ImageData { get; set; }

        [ScaffoldColumn(false)] [Column]
        public string ImageMimeType { get; set; }

但是我想知道如果我不以这种方式开发我的数据库会发生什么。如果我只是在我的解决方案中添加一个linqtosql.dbml(linq to sql class)文件,我会得到那个好设计师会发生什么。

我将把所有这些数据注释放在哪里,我会在另一个类中创建所有这些内容?或者也许在视图模型中?

2 个答案:

答案 0 :(得分:4)

您是否尝试过使用MetadataType属性?

public class IProductMetadata
{         
    [HiddenInput(DisplayValue = false)]
    int ProductID;

    [Required(ErrorMessage = "Please enter a product name")]         
    string Name;

    [Required(ErrorMessage = "Please enter a description")]         
    string Description;
    // etc
}

[MetadataType(typeof(IProductMetadata))]
public partial class Product
{
}

我使用它通过partial类将属性附加到生成代码的属性上。它的效果非常好!

答案 1 :(得分:0)

我在视图模型上执行此操作,并使用AutoMapper在数据对象和视图模型之间进行映射。