EF7 1対1の関係

c# entity-framework-core

質問

私は現在、新しいEF7を扱うことに取り組んでおり、1対1の関係を扱う際には奇妙な振る舞いをしています。

私は次のモデルを持っています

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

私が抱えている問題は、測定単位を持つマテリアルを試してみると、測定単位は常にnullに設定されますが、生成されたテーブルをチェックすると、外来キーが実際に作成されます。

私はOnModelを作成する際にも関係を強制しようとしましたが、まだユニットオブジェクトを取得できません。

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

このリファレンスをどのように追加する必要がありますか、これはまだサポートされていますか?

受け入れられた回答

どのように参照を取得しようとしていますか?この時点での遅延ロードはEF7では機能しません。あなたは熱心な読み込み(dbContext.Materials.Include(m => m.UnitOfMeasure))またはその明示的なバージョンを行う必要があります。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ