2011-11-02 50 views
2

我有一個名爲Product實體來驗證,這是它的一個零件的declration:使用元數據與實體框架使用數據標註

[EdmEntityTypeAttribute(NamespaceName="NorthwindModel", Name="Product")] 
[Serializable()] 
[DataContractAttribute(IsReference=true)] 
public partial class Product : EntityObject 
{ 
    #region Factory Method 

    /// <summary> 
    /// Create a new Product object. 
    /// </summary> 
    /// <param name="productID">Initial value of the ProductID property.</param> 
    /// <param name="productName">Initial value of the ProductName property.</param> 
    /// <param name="discontinued">Initial value of the Discontinued property.</param> 
    public static Product CreateProduct(global::System.Int32 productID, global::System.String productName, global::System.Boolean discontinued) 
    { 
     Product product = new Product(); 
     product.ProductID = productID; 
     product.ProductName = productName; 
     product.Discontinued = discontinued; 
     return product; 
    } 

    #endregion 
    #region Primitive Properties 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)] 
    [DataMemberAttribute()] 
    public global::System.Int32 ProductID 
    { 
     get 
     { 
      return _ProductID; 
     } 
     set 
     { 
      if (_ProductID != value) 
      { 
       OnProductIDChanging(value); 
       ReportPropertyChanging("ProductID"); 
       _ProductID = StructuralObject.SetValidValue(value); 
       ReportPropertyChanged("ProductID"); 
       OnProductIDChanged(); 
      } 
     } 
    } 
    private global::System.Int32 _ProductID; 
    partial void OnProductIDChanging(global::System.Int32 value); 
    partial void OnProductIDChanged(); 

    /// <summary> 
    /// No Metadata Documentation available. 
    /// </summary> 
    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)] 
    [DataMemberAttribute()] 
    public global::System.String ProductName 
    { 
     get 
     { 
      return _ProductName; 
     } 
     set 
     { 
      OnProductNameChanging(value); 
      ReportPropertyChanging("ProductName"); 
      _ProductName = StructuralObject.SetValidValue(value, false); 
      ReportPropertyChanged("ProductName"); 
      OnProductNameChanged(); 
     } 
    } 
    private global::System.String _ProductName; 
    partial void OnProductNameChanging(global::System.String value); 
    partial void OnProductNameChanged(); 

我想數據註釋添加到它的財產。我搜索看房,並根據這個話題: Using DataAnnotations with Entity Framework

我創建了一個局部類是這樣的:

[MetadataType(typeof(PersonMetaData))] 
public partial class Product 
{ 

} 
public class PersonMetaData 
{ 
    [Required(ErrorMessage = "nima", AllowEmptyStrings = false)] 
    public global::System.String ProductName { set; get; } 

    [Range(minimum: 10, maximum: 100, ErrorMessage = "NIIMMMAA")] 
    public global::System.Int32 ProductID { set; get; } 
} 

,但它不工作。測試我寫這篇文章的代碼:

isValid變量始終是「真」。我的錯誤在哪裏?

感謝

+0

鏈接:http://stackoverflow.com/q/7978608/60761 –

回答

1

變化

public class PersonMetaData 
{ 
    [Required(ErrorMessage = "nima", AllowEmptyStrings = false)] 
    public global::System.String ProductName { set; get; } 

    [Range(minimum: 10, maximum: 100, ErrorMessage = "NIIMMMAA")] 
    public global::System.Int32 ProductID { set; get; } 
} 

public class PersonMetaData 
{ 
    [Required(ErrorMessage = "nima", AllowEmptyStrings = false)] 
    public object ProductName { set; get; } 

    [Range(minimum: 10, maximum: 100, ErrorMessage = "NIIMMMAA")] 
    public object ProductID { set; get; } 
} 
+0

它不work.Should我刪除字段declration從第一個產品類我上傳我的項目在這個地址:http://www.4shared.com/file/kmmx_vRs/MetaData.html。它是一種形式測試應用程序。感謝 – Arian

+0

不,不刪除(編輯)在生成文件。你的設置看起來不錯,我知道這適用於MVC3。我不熟悉手動創建上下文等。請參閱此處的示例:http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx –

+0

作爲診斷步驟,添加一個'[Range(5,10)] public int MyProperty {get;組; }'到(現在是空的)Product類。如果顯示錯誤出現在MetaData鏈接中。 –