【问题标题】:Force recreate database for Entity to Complex Type conversion强制为实体到复杂类型转换重新创建数据库
【发布时间】:2012-07-02 09:25:08
【问题描述】:

我有一个 WCF 服务,它使用 EF(仍在学习它)将一些自己的元数据存储在数据库中。在某些时候我意识到(要求发生了变化)我不需要为某些类单独的实体,并且想将它们转换为复杂类型,因为关系是 1:1。我不介意重新创建数据库或丢失任何数据,因为没有。

问题是,每当我尝试运行应用程序或调用 Update-database 时,我都会收到“'Model.ReportConfig' 类型已配置为实体类型。它无法重新配置为复杂类型。”这在某种程度上是有道理的,但我真的不希望它被重新配置,而是从头开始配置,但即使我删除了所有旧表,甚至在 web.config 中指定了绝对干净的数据库,我仍然会收到此错误。

顺便说一句。我没有看到任何 EdmMetadata 表。

我的数据完整性令人困惑。有什么想法吗?

编辑报告配置有问题。我的 DbContext 中没有其他配置(即使我尝试在 OnModelCreating 中添加 modelBuilder.ComplexType();)

[DataContract]
[ComplexType]
//    [Table("UserReportConfigs", Schema = "WebApp")]
public class ReportConfig
{
//        [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
//        public long Id { get; set; }

    [DataMember]
    public string Title { get; set; }

    [DataMember]
    public DateTime From { get; set; }

    [DataMember]
    public DateTime To { get; set; }

    [DataMember]
    public int ReportAs { get; set; }

    [DataMember]
    public string ParamValue { get; set; }
}

EDIT2 我将 ReportConfig 重命名为 Configuration 并且错误消息现在反映了新名称,所以我假设它试图跟上元数据的假设可能是错误的。看起来在迁移期间 EF 将其注册为实体,然后发现它被标记为 ComplexType。

我使用的是 5.0.0-rc 版本的 EF

【问题讨论】:

  • 显示您的ReportConfig 的代码以及您如何将其映射为复杂类型的方式。
  • 确保您的 DbContext 类中没有 DbSet<ReportConfig>
  • @DiegoMijelshon 请在您的评论中给出完整的答案 - 我很乐意接受它,因为这正是原因!

标签: .net entity-framework migration ef-code-first


【解决方案1】:

确保您的 DbContext 类中没有 DbSet<ReportConfig>,因为这会告诉 EF ReportConfig 是一个实体。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多