0

クエリでエンティティが要求されたときに、特定のナビゲーション プロパティを自動熱心にロードするために、DbContext を改ざんする方法はありますか? (遅延読み込みなし)。

エンティティ フレームワーク 5

例:

var supremeEmployee = context.Employees.FirstOrDefault(x => x.EmployeeId == 42);

返されたモデルは、「Department」ナビゲーション プロパティが事前設定された状態で返されます。

4

1 に答える 1

1

モデルがどのように見えるかによって異なります。インターフェイスまたは継承を使用している場合は、常にナビゲーションプロパティを含むその型のジェネリック制約を使用して、DbContextクラスに関数を追加できます。

私の経験では、通常はそうしないほうがよいのですが、パフォーマンスの面で。私は、現時点で必要なフィールドだけを匿名タイプにロードすることを好みます。

最も基本的な方法でこれを行うことができます:

public class Department
    {
        public int Id { get; set; }
    }

    public class Employee
    {
        public int Id { get; set; }
        public Department Department { get; set; }
    }

    public class MyContext : DbContext
    {
        protected DbSet<Employee> Employees { get; set; }

        public IQueryable<Employee> LoadEmployees()
        {
            return Employees.Include(p => p.Department);
        }
    }
于 2012-12-04T01:24:50.183 に答える