0

次のシナリオを想像してみてください: 1 対多の関係にある 2 つのクラスがあり、1 つのクラスからすべてのオブジェクトをロードし、同時に関連するすべてのオブジェクトもロードしようとしています。これらのクラスの両方の骨格構造は次のとおりです。

public class Parent
{
    //... id and other members omitted

    [Association(Name = "FK_Parent_Children", Storage = "_entries", ThisKey = "Id")]
    public EntitySet<Child> Children {
        get { return _children; }
    }
    private readonly EntitySet<Child> _children = new EntitySet<Child>();
}

public class Child
{
    //... id and other members omitted

    [Column]
    internal int? _belongId;

    private EntityRef<Parent> _belong;
    [Association(Name = "FK_Parent_Children", Storage = "_belong", ThisKey = "_belongId", OtherKey = "Id", IsForeignKey = true)]
    public Parent Belong
    {
        get { return _belong.Entity; }
        set { _belong.Entity = value; }
    }
}

そして、すべてのオブジェクトをロードするために試したコードは次のとおりです。

using(var context = new MyContext())
{
    context.DeferredLoadingEnabled = false;

    var options = new DataLoadOptions();    
    options.AssociateWith<Parent>(c => c.Children.OrderByDescending(x => x.Born).Take(100));    
    options.LoadWith<Parent>(m => m.Children);
    context.LoadOptions = options;

    var parents = context.Parents.OrderBy(m => m.LastName).ToList();
    return parents; 
}

興味深いことに、常に EntitySet にロードされるのは最大で 1 つの「子」だけですが、多くの場合、1 つの「親」に関連付けられているオブジェクトは他にもあります。ここで何が間違っている可能性がありますか?

4

1 に答える 1

0

私はこの不安定な動作の原因を見つけることができず、最終的にこの方法で行うことをあきらめました.

于 2012-07-05T16:54:18.010 に答える