"不支持每种类型的多个对象集"尝试将数据从两个不同的表映射到单个域类型时出错

时间:2015-06-01 02:42:30

标签: entity-framework dns dbcontext

我是Entity Framework的新手,我尝试使用以下表格结构设置Code First

表:客户

1. ClientID int
2. Name varchar(200)
3. Company varchar(200)

表:ERPConnection

1. ClientID int (foreign key to client)
2. Server varchar(100)
3. Username varchar(100)

表:ERPAdminConnection

1. ClientID int (foreign key to client)
2. Server varchar(100)
3. Username varchar(100)

正如您所看到的,客户端 - > erpconnection与客户端 - > erpadminconnection之间存在一对一的关系。 (注意:我没有设计表格,但我必须按原样使用它)

你可以看到我不需要两种不同的类型来表示erp和erpadmin。

所以我想创建一个像这样的上下文

public class ClientContext: DbContext
{
    public DbSet<Client> Clients{ get; set; }
    public DbSet<Connection> ERPConnection { get; set; }
    public DbSet<Connection> ERPAdminConnection { get; set; }
    public ClientContext(string connectionString)
    {
        this.Database.Connection.ConnectionString = connectionString;
    }
}

然而,当我运行一些示例代码时,我收到了一个错误 &#34;不支持每种类型的多个对象集。 &#34;

如何设置我的类,以便可以使用上述DBContext而无需为ERPAdminConnection定义新类型?

1 个答案:

答案 0 :(得分:0)

这是不可能的。在内部,数据库到实体的映射是一对一的,每个实体必须与具有唯一名称的类匹配。

EF Code first, how to register same table name with different schema?

一个选项是拥有一个基类和两个派生类(如果它们相同则不需要在其中定义很多)并使用TPC inheritance