2011-11-02 108 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链接中。 –