我有一个 WCF 服务,使用 EF(仍在学习它)将一些自己的元数据存储在数据库中。在某些时候,我意识到(要求已更改)我不需要某些类的单独实体,并且希望将它们转换为复杂类型,因为关系是 1:1。我不介意重新创建数据库或丢失任何数据,因为没有。
问题是,每当我尝试运行应用程序或调用 Update-database 时,我都会收到“'Model.ReportConfig' 类型已配置为实体类型。它不能重新配置为复杂类型。” 这在某种程度上是有道理的,但我真的不希望它被重新配置,而是从头开始配置,但即使我删除了所有旧表,甚至在 web.config 中指定了绝对干净的数据库,我仍然会收到这个错误。
顺便提一句。我没有看到任何 EdmMetadata 表。
这让我对我的数据完整性感到困惑。有任何想法吗?
编辑有问题的 ReportConfig。我的 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