2

コードファーストEntity Framework 5で関連コレクションを定義する適切な方法は何ですか? この概要に従っていましたが、何かが機能していません。

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

class Order
{
  public Guid Id {get; set; }
  public DateTime Created {get; set;}
  public ICollection<OrderLine> OrderLines {get; set;}
}

class OrderLine
{
  public Guid Id {get; set;}
  public Guid OrderId {get; set;}
  public Order Order {get; set;}
  public string Product {get;set;}
}

class OrderContext : DbContext
{
    public DbSet<Order> Orders { get; set; }
    public DbSet<OrderLine> OrderLines { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();

        base.OnModelCreating(modelBuilder);
    }
}

データベースにいくつかの行を持つがありOrderます。ロードされると、そのOrderLinesプロパティは null です。

仮想化を試みOrderLinesましたが、役に立ちませんでした。それ以外の場合、すべてがデフォルトに設定されます。遅延ロードは true、CreateProxy は true...

私が試してみるとInclude("OrderLines")、DBから行を取得して取得します。

4

2 に答える 2

2

OrderLineナビゲーション プロパティに FK 注釈を配置してみてください。

class OrderLine
{
  public Guid Id {get; set;}
  public string Product {get;set;}

  // 1:many with Order
  public virtual Guid OrderId {get; set;}
  [ForeignKey("Id")]
  public virtual Order Order {get; set;}      
}
于 2013-05-15T19:53:56.397 に答える
1

データ注釈を使用して、外部キー属性に注釈を付けます。Fluent API でそれを行う必要はもうありません。

[ForeignKey("Id")]
public virtual ICollection<OrderLine> OrderLines {get; set;}

デフォルトでそれが作成されると思っていたでしょう。

于 2013-05-15T17:36:21.553 に答える