我正在尝试首先使用实体框架 4.2 和对象创建 SQL CE 4.0 数据库。
我的类是在 WCF 服务中定义的。
我有一个基类:
public class BaseData
{
public DateTime LastUpdated { get; set; }
public int StatusTypeId { get; set; }
public StatusType StatusType { get; set; }
public RecordStatusEnum RecordStatus { get; set; }
}
和一个继承类:
public class JobType : BaseData
{
public int JobTypeId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int SortOrder { get; set; }
public virtual ICollection<Role> Roles { get; set; }
}
当 WCF 序列化基类时,它会添加 ExtensionDataObject 属性
public partial class BaseData : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged {
[System.NonSerializedAttribute()]
private System.Runtime.Serialization.ExtensionDataObject extensionDataField;
[global::System.ComponentModel.BrowsableAttribute(false)]
public System.Runtime.Serialization.ExtensionDataObject ExtensionData {
get {
return this.extensionDataField;
}
set {
this.extensionDataField = value;
}
}
这会导致 EF 在从 JobType 类创建表时崩溃并出现以下错误:
未在 Set JobTypes 中为属性 JobType.ExtensionData 指定映射
我该如何解决这个问题?
最佳答案
在数据上下文定义中,重写 OnModelCreating 以忽略扩展数据属性来自的类:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Ignore<System.Runtime.Serialization.ExtensionDataObject>();
base.OnModelCreating(modelBuilder);
}
关于.net - WCF ExtensionDataObject 导致 Entity Framework 4.2 无法创建数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8070196/