EF7脚手架没有创建列

时间:2016-01-27 16:23:15

标签: entity-framework database-migration entity-framework-core ef-migrations

我的模型看起来像这样:

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。这个问题让我发疯了。

1 个答案:

答案 0 :(得分:2)

我解决了这个问题。首先我有外键属性,所以我的模型看起来像这样:

public Order Order {get;set;}
public Guid OrderId {get;set;}

我不喜欢这样,导致数据库中出现重复的列,因此我从模型中删除了[EntityName] Id属性。但正因如此,EF让所有人感到困惑,再也无法弄清楚我想要做什么。因此,对于所有1:1关系,我只是删除了等式一边的导航属性(所以现在Order有一个对Address的引用,但是Address不再有导航属性返回Order)。这解决了这个问题。

因此,如果我的问题中有示例代码,我从Order删除了Address属性。