0

強く型付けされたDbContextのOnModelCreating()メソッドで、次のように独自のデータベーステーブル名とスキーマを指定しています。

modelBuilder.Entity<MyAssociativeClass>().ToTable("MYASSOCIATIVECLASS", schemaName: "MYSCHEMA");
        modelBuilder.Entity<MyAssociativeClass>()
            .HasKey(x => new { x.ClassA.ID, ClassBID = x.ClassB.ID });

ただし、次のエラーが発生します。

プロパティ式'x=> new <> f__AnonymousType1`2(ID = x.MyClassA.ID、MyClassBID = x.MyClassB.ID)'は無効です。式はプロパティを表す必要があります:C#:'t => t.MyProperty' VB.Net:'Function(t)t.MyProperty'。複数のプロパティを指定する場合は、匿名タイプを使用します。C#:'t => new {t.MyProperty1、t.MyProperty2}' VB.Net:'Function(t)New From {t.MyProperty1、t.MyProperty2}'。

ご覧のとおり、MyClassAとMyClassBの両方にIDプロパティがあります。匿名タイプでMyClassB.IDに別の名前を指定しているので、同じプロパティ名を2回使用しても競合は発生しません。しかし、これでも問題が発生します。なぜこれを許可しないのですか?

4

1 に答える 1

1

私はあなたがクラスであると思いますMyAssociativeClassは、外部キーをプロパティとして公開する必要があります。そうすれば、次のことができます。

modelBuilder.Entity<MyAssociativeClass>().ToTable("MYASSOCIATIVECLASS", schemaName: "MYSCHEMA");
        modelBuilder.Entity<MyAssociativeClass>()
            .HasKey(x => new { x.ClassA_Id, ClassB_Id});
于 2012-12-16T20:19:54.643 に答える