【发布时间】:2012-08-17 21:46:05
【问题描述】:
我正在尝试首先对现有数据库使用代码。到目前为止一切顺利,但现在我在一对多对一的关系中失败了。
在 db 中有一个表 customer 和一个表地址,其中 address 没有任何 customerid,而是一个外来的一对多键 FK_Address_Customer。
从 edmx 自动创建的类看起来像
客户:
public int CustomerID (PK)
public Address Address
地址:
public int AddressID (PK)
public HashSet<Customer> Customers
无论我在 fluent API 中执行的操作是否因无效列 Address_AddressID 或多重性与引用约束错误冲突而失败。
我假设:
//Customer has one address, address can have multiple customers<br/>
pModelBuilder.Entity<Customer>().HasRequired(m => m.Address).WithMany(x => x.Customers);
//Address has multiple customers, customer has one address<br/>
pModelBuilder.Entity<Address>().HasMany(m => m.Customers).WithRequired();
我通过使用 HasForeignKey 在数据库中没有外键的其他表上得到了正确的结果,但在上述情况下它不起作用。我也尝试通过 MapKey 传递外键名称,但也没有运气。
我怎样才能让这种简单的关系继续下去?
谢谢
【问题讨论】:
-
你能发布你现有的数据库吗?您说 Address to Customer 上有一个外来的一对多键,但它不在上面的类中。您的客户对象是否有 AddressId,或者您使用的是链接表?
标签: entity-framework-4.1 ef-code-first fluent