1

データベースにいくつかの独自のメタデータを格納するために 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バージョンを使用しています

4

1 に答える 1

6

EFにエンティティであることを通知するDbSet<ReportConfig>ため、DbContextクラスにまだがないことを確認してください。ReportConfig

于 2012-07-03T09:59:50.923 に答える