私は以下を参照してください、両方が潜在的にnullになる可能性があり、プロパティとして二つのオブジェクト(User
、PrimaryNode
)を持つオブジェクトを持っている:Entity FrameworkのObjectQuery.Include()
public class Item
{
[Key]
public int ItemId { get; set; }
public string ItemName { get; set; }
public Node PrimaryNode { get; set; }
public User User { get; set; }
}
私は移入するEntity Frameworkの6を使用していますItem
オブジェクトを使用し、連鎖インクルードを使用して、PrimaryNode
およびUser
オブジェクトをその中に移入します。
using (var db = new MyContext())
{
var item = db.Items.Include(i => i.User).Include(n => n.PrimaryNode).FirstOrDefault(i => i.ItemId == id);
}
上記の例では、i.User
item
変数がヌルであるNULLの場合:
最初の連鎖、ヌルのようにオブジェクト全体戻るヌルを目的としている例が挙げられます。サブオブジェクトがnullの場合、親オブジェクトと他のサブオブジェクトにはまだポピュレートされるように、両方のサブオブジェクトにデータを取り込む最良の方法はありますか?
'PrimaryNode'と' User'仮想を作成し、オプションとして 'Item'にマップしますか? –
私は@octaviocclのステートメントに同意します - あなたの質問に間違いはありません。私のテストでは、UserオブジェクトがItemにリンクされていなくても、そのクエリはNodeオブジェクトに値を設定します。 –
私は上記のアプローチに間違いがないことを確認できるようになりました。複雑なクラスであったものを単純化しました。私の場合の問題は、Userオブジェクトを持つだけでなく、UserIdプロパティも持っていたことです(私はいくつかのサークルで推奨されているように、UserオブジェクトをロードすることなくIDを取得できます)。問題を引き起こしていたこのプロパティは、設定された方法により、クエリがUserテーブルへの内部結合になりました。私の謝罪と答えに感謝します。 –