2

我有一個模型,看起來像這樣:EF7腳手架沒有創造列

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);

有誰知道這是怎麼回事?我使用實體框架7.0.0-RC1決賽。這個問題讓我瘋狂。

+0

看看你遷移文件夾中的遷移腳本,看看它在做什麼...... – NovaDev

+0

@NovaDev我做到了,它只是確認它沒有創造列。我想知道爲什麼。我需要EF來正確生成遷移。 –

回答

2

我解決了這一問題。首先,我有外鍵的屬性,所以我的模型是這樣的:

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

我不喜歡這一點,並導致數據庫重複列,所以我從模型中移除了[實體名稱]標識屬性。但正因爲如此,EF得到了所有困惑無法再找出我要怎樣做。因此,對於所有的1:1的關係,我只是去掉了導航屬性上的等式的一邊(所以現在訂單已到地址的引用,但地址不再具有導航屬性返回順序)。這解決了這個問題。

因此,在我的問題中的示例代碼的情況下,我從Address刪除Order財產。