2011-01-10 55 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