2011-01-10 43 views
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)文件,那么我会得到这个不错的设计师会发生什么情况。

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

回答

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 
{ 
} 

我使用它通过部分类将属性附加到生成的代码上的属性。它工作得很好!

0

我在视图模型上做了它,并使用AutoMapper在数据对象和视图模型之间进行映射。

+0

显然这是你的选择。但我的观点是,您正在验证应用程序层中的业务规则,这意味着您的模型不可移植。如果你想要一个不同的前端 - 比如说移动设备? – nick 2011-01-10 21:58:42

+0

你会把它放在什么地方? – chobo2 2011-01-10 22:06:55