2015-06-14 93 views
0

我目前正在處理新的EF7,並且處理一對一關係時遇到了奇怪的行爲。EF7一對一的關係

我有以下型號

public class Material 
{ 
    [Key] 
    [Required] 
    [Column(TypeName = "bigint")] 
    public long Id { get; set; } 

    [Required] 
    [MaxLength(128)] 
    public string Name { get; set; } 

    [Required] 
    [MaxLength(512)] 
    public string Description { get; set; } 

    [Required] 
    [Column(TypeName = "money")] 
    public decimal CostPerUnit { get; set; } 

    public virtual Unit UnitOfMeasure { get; set; } 

    [Required] 
    [Column(TypeName = "bit")] 
    public bool IsActive { get; set; } = false; 
} 


public class Unit 
{ 
    [Key] 
    [Column(TypeName = "bigint")] 
    public long Id { get; set; } 

    [Required] 
    [MaxLength(32)] 
    public string Name { get; set; } 

    [Required] 
    [MaxLength(64)] 
    public string Description { get; set; } 

    [Required] 
    public string Type { get; set; } 
} 

和我建立的表如下:

builder.Entity<Unit>().Key(u => u.Id); 
builder.Entity<Unit>().Property(u => u.Name).MaxLength(64).Required(); 
builder.Entity<Unit>().Property(u => u.Description).Required(); 
builder.Entity<Unit>().Property(u => u.Type).Required(); 

builder.Entity<Material>().Key(m => m.Id); 
builder.Entity<Material>().Property(m => m.Name).Required(); 
builder.Entity<Material>().Property(m => m.Description).Required(); 
builder.Entity<Material>().Property(m => m.CostPerUnit).Required(); 
builder.Entity<Material>().Property(m => m.IsActive).Required(); 

說我遇到的問題是現在,當我嘗試和查詢的材料使用度量單位,度量單位始終設置爲空,但在檢查生成的表時,我可以清楚地看到外鍵實際上已創建。

我也試圖強制在OnModel創建關係,但我仍然無法檢索單元對象。

builder.Entity<Material>().Reference(m => m.UnitOfMeasure).InverseReference().ForeignKey<Unit>(u => 

我應該如何添加這個引用,或者這甚至支持嗎?

回答

0

你如何獲得參考?此時的延遲加載在EF7中不起作用。您必須執行加載(dbContext.Materials.Include(m => m.UnitOfMeasure))或其顯式版本。

+0

是的懶加載是我期待,不知道爲什麼它不工作。在此期間,我不得不急切地加載對象,但真的希望我不必這樣做。這是beta5 – Marqueone