实体框架4.2一对多的关系

时间:2014-01-30 17:01:11

标签: linq entity-framework-4

我在现有数据库中有2个表:

Table1

[Key] public int Id {get; set;}
public int CustomerID {get; set;}
List<Table2> Table2Items {get; set;}
....


Table2
[Key] public int Id {get; set;}
public int customerid {get; set;}
Table1 Table1Item {get; set;}
...

我想创建一对多关系,这样table1中的每条记录都可以在table2中包含许多相关记录。

它通常使用table1中的主键字段直接转发,该字段与表2中的外键字段(customerid)匹配。

但是我希望将基于table1中的CustomerID的2个表与table2中的customerid相关联。

以下似乎通过将table2中的customerid字段与table1中的主键一起使用来关联2个表,这不是我需要的。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{

  modelBuilder.Entity<Table1>()
    .HasMany<Table2>(s => s.Table2Items)
    .WithRequired(s => s.Table1Item)
    .HasForeignKey(s => s.customerid);
}

如何修改上面显示的代码以符合我的要求。

1 个答案:

答案 0 :(得分:0)

当前版本的Entity Framework无法实现您想要实现的目标。引自https://stackoverflow.com/a/7022799/337294

  

这是不可能的。 EF中的关系遵循与数据库中完全相同的规则。这意味着主表必须具有唯一标识符,该标识符由依赖表引用。在数据库的情况下,标识符可以是主表的主键或唯一列。否则它是无效的关系。

由于Entity Framework尚不支持唯一索引(尽管Feature Suggestion page中有强烈需求),因此它必须是Id类的Table1属性。