【问题标题】:Anonymous type 'is not valid' exception in Entity Framework code first OnModelCreating实体框架代码中的匿名类型“无效”异常首先 OnModelCreating
【发布时间】:2012-12-16 20:08:16
【问题描述】:

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

【问题讨论】:

    标签: entity-framework ef-code-first anonymous-types


    【解决方案1】:

    我认为您是 MyAssociativeClass 类将不得不将外键公开为属性,这样您就可以这样做:

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

    【讨论】:

    • 很抱歉花了这么长时间才回复您,但这似乎是让它工作的唯一方法。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    相关资源
    最近更新 更多