我让VS使用EF 4.3.1从现有的SQL表创建我的模型。因为数据库表不是最终的并且可能会更改,所以我不想将验证属性直接设置到模型文件中,因为在更新模型时它会被覆盖。
我想使用此处描述的MetadataTypeAttribute方法: Update Model From Database (Database First)
所以我创建了一个包含这个类的外部文件:
using System.ComponentModel.DataAnnotations;
namespace PDB.Models
{
[MetadataTypeAttribute(typeof(t_scriptingMetadata))]
public partial class t_scripting
{
}
public class t_scriptingMetadata
{
[Required]
public int platform {get; set;}
[Required]
[StringLength(20)]
public string Projectname {get; set;}
}
}
不幸的是我在VS中遇到了这些错误:
由VS生成的我的模型正好具有错误消息提及的这些属性:
[EdmEntityTypeAttribute(NamespaceName="CAWI_STDMGTModel", Name="t_scripting")]
[Serializable()]
[DataContractAttribute(IsReference=true)]
public partial class t_scripting : EntityObject
{
//...
}
我做错了什么?
答案 0 :(得分:0)
你的t_scriptingMetadata类必须进入t_scripting 不一定
[MetadataTypeAttribute(typeof(t_scriptingMetadata))]
public partial class t_scripting
{
public class t_scriptingMetadata
{
[Required]
public int platform {get; set;}
[Required]
[StringLength(20)]
public string Projectname {get; set;}
}
}
两个部分类必须具有相同的命名空间。 希望这有帮助。 此致
答案 1 :(得分:0)
我发现了这个问题。我的模型中有一个表,实际上是一个包含另一个表中的字段的视图,该表也在我的模型中。所以错误信息确实是正确的。感谢您的帮助,vfabre!