データベースにいくつかの独自のメタデータを格納するために EF (まだ学習中) を使用する WCF サービスがあります。ある時点で(要件が変更されました)、一部のクラスに個別のエンティティは必要なく、関係が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 としてマークされていることがわかります。
私はEFの5.0.0-rcバージョンを使用しています