私はまだ EF の学習過程にあり、EF の遅延読み込みに慣れようとしています。
次のクラスとテストを検討してください。
[Table("Tenant")]
public class Tenant : IEntity
{
public int Id { get; set; }
public virtual string Name { get; set; }
[Key]
public string Guid { get; set; }
public virtual ICollection<User> Users { get; set; }
public virtual ICollection<CaseType> CaseTypes { get; set; }
public Tenant()
{
Users = new List<User>();
CaseTypes = new List<CaseType>();
}
}
そしてテスト:
[Test]
public void TenantLazyLoading()
{
var tenant = _applicationContext.Tenants.Create();
tenant.Guid = "d176dc7c-6b96-4ab6-bddf-ce5a12024c39";
_applicationContext.Tenants.Attach(tenant);
Assert.AreEqual(1, tenant.Users.Count); // Pass, the navigation property users was loaded (lazy)
Assert.AreEqual("localhost", tenant.Name); // Fail, the tenant name is not loaded
}
遅延読み込みは、明らかにナビゲーション プロパティでのみ機能し、テナント プロパティでは機能しません。両方のプロパティ (Users
とName
) を仮想にしましたが、それは問題ではないようです。
lazy load
のローカル プロパティを取得するにはどうすればよいTenant
ですか?