我有一个如下所示的模型:
public class Order
{
// removed irrelevant other properties
public Guid Id { get; set; }
public Address BuyerAddress { get; set; }
public Address SellerAddress { get; set; }
}
public class Address
{
public Guid Id { get; set; }
public string Street { get; set; }
public Order Order { get; set; }
}
在 DbContext 中,我将它们连接起来,如下所示:
entityTypeBuilder.HasOne(x => x.BuyerAddress).WithOne(x => x.Order).IsRequired(false);
entityTypeBuilder.HasOne(x => x.SellerAddress).WithOne(x => x.Order).IsRequired(false);
当我运行时
dnx ef migrations add Foo
dnx ef database update
正在使用某些属性创建表,但缺少其他属性,例如 SellerAddress
(尽管 BuyerAddress
创建得很好)。
其他实体也存在同样的问题,例如 User
<-> BankAccount
,它是 1:1 关系,定义为 entityTypeBuilder.HasOne(x => x.BankAccount).WithOne(x => x.User).IsRequired(false);
有人知道怎么回事吗?我正在使用 Entity Framework 7.0.0-rc1-final。这个问题让我抓狂。
最佳答案
我解决了这个问题。首先,我有外键属性,所以我的模型如下所示:
public Order Order {get;set;}
public Guid OrderId {get;set;}
我不喜欢这样,它会导致数据库中出现重复的列,因此我从模型中删除了 [EntityName]Id 属性。但正因为如此,EF变得很困惑,无法再弄清楚我到底想做什么。因此,对于所有 1:1 关系,我只是删除了等式一侧的导航属性(因此现在 Order 具有对 Address 的引用,但 Address 不再具有返回 Order 的导航属性)。这解决了问题。
因此,对于我问题中的示例代码,我从 Address
中删除了 Order
属性。
关于entity-framework - EF7 脚手架不创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35042676/