匿名类型 'is not valid' 实体框架代码中的异常 首先 OnModelCreate



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

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 指定了不同的名称,因此与两次使用相同的属性名称不会发生冲突。 BUt 这仍然会导致问题。 为什么它不允许这样做?

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

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

最新更新