Entity framework 匿名类型';无效';实体框架代码中的异常首先发生在ModelCreating上

Entity framework 匿名类型';无效';实体框架代码中的异常首先发生在ModelCreating上,entity-framework,ef-code-first,anonymous-types,Entity Framework,Ef Code First,Anonymous Types,我在强类型DbContext中的OnModelCreating()方法中指定自己的数据库表名和模式,如下所示: modelBuilder.Entity<MyAssociativeClass>().ToTable("MYASSOCIATIVECLASS", schemaName: "MYSCHEMA"); modelBuilder.Entity<MyAssociativeClass>() .HasKey(x => new { x

我在强类型DbContext中的OnModelCreating()方法中指定自己的数据库表名和模式,如下所示:

modelBuilder.Entity<MyAssociativeClass>().ToTable("MYASSOCIATIVECLASS", schemaName: "MYSCHEMA");
        modelBuilder.Entity<MyAssociativeClass>()
            .HasKey(x => new { x.ClassA.ID, ClassBID = x.ClassB.ID });
modelBuilder.Entity();
modelBuilder.Entity()
.HasKey(x=>new{x.ClassA.ID,ClassBID=x.ClassB.ID});
但是,我得到以下错误:

属性表达式“x=>new f_u匿名类型1`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:“函数(t)new From{t.MyProperty1,t.MyProperty2}”


如您所见,MyClassA和MyClassB都有一个ID属性。我在匿名类型中为MyClassB.ID指定了一个不同的名称,因此两次使用相同的属性名不会产生冲突。但这仍然引起了一个问题。为什么它不允许这样做?

我认为您的类MyAssociationClass必须将外键作为属性公开,这样您就可以执行以下操作:

modelBuilder.Entity<MyAssociativeClass>().ToTable("MYASSOCIATIVECLASS", schemaName: "MYSCHEMA");
        modelBuilder.Entity<MyAssociativeClass>()
            .HasKey(x => new { x.ClassA_Id, ClassB_Id});
modelBuilder.Entity();
modelBuilder.Entity()
.HasKey(x=>new{x.ClassA_Id,ClassB_Id});

很抱歉花了这么长时间才回复您,但这似乎是让它正常工作的唯一方法。谢谢