.net - WCF ExtensionDataObject 导致 Entity Framework 4.2 无法创建数据库

标签 .net wcf entity-framework-4

我正在尝试首先使用实体​​框架 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/

相关文章:

C# RegEx 同时匹配字符串开头和单词开头

c# - WCF 服务的 Sharepoint 2010 问题

c# - Entity Framework 4 支持多数据库吗?

datetime - 在 Code-First Entity Framework 和 SQL Server 中使用 DateTime 属性

c# - Ioc 中繁忙的构造函数——它们是代码的味道吗?

c# - 将非托管和托管 dll 合并为 DotNet 中的单个 dll

c# - 从 WCF 服务服务器引发事件

c# - 使用新的亚马逊服务搜索亚马逊示例

entity-framework - EF Code First 在保存更改时处理数据库异常

c# - 如何通过 T4 自动化为每个实体生成我的所有实体组成的两个表