我是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定义新类型?
答案 0 :(得分:0)
这是不可能的。在内部,数据库到实体的映射是一对一的,每个实体必须与具有唯一名称的类匹配。
EF Code first, how to register same table name with different schema?
一个选项是拥有一个基类和两个派生类(如果它们相同则不需要在其中定义很多)并使用TPC inheritance。