Entity Framework 6 - 延迟加载不起作用
Entity Framework 6 - lazy loading not working
这是我第一次使用 EF。因此,我可能错过了一些简单的事情,这些事情阻止了我的 BClass 的延迟加载。当我加载 AClass 时,'B' 属性 为空。我原以为它会像坚持的那样被填充。
对于我的示例,我有两个简单的 classes:
public class AClass
{
public AClass()
{
Id = Guid.NewGuid();
B = new BClass();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
public string Name { get; set; }
public virtual BClass B { get; set; }
}
public class BClass
{
public BClass()
{
Id = Guid.NewGuid();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
public string Description { get; set; }
}
在'Context' class:
public DbSet<AClass> AClasses { get; set; }
public DbSet<BClass> BClasses { get; set; }
下面是一个简单的测试。我期待 x.B 会被加载。相反它是空的?
using (var db = new TestContext())
{
AClass a = new AClass();
a.Name = "AClass";
a.B.Description = "BClass Description Goes Here!";
db.AClasses.Add(a);
db.SaveChanges(); // Works. Confirmed both a and a.B are persisted to the database
}
using (var db = new TestContext())
{
AClass x = db.AClasses.Where(a => a.Name == "AClass").FirstOrDefault();
System.Console.WriteLine(x.Name);
System.Console.WriteLine(x.B.Description); // x.B is null. Expected it to load and the .Description property to be "BClass Description Goes Here!"
}
更改已正确保存到数据库中。我还不能post截图。
来自A班table:
Id Name B_Id
B7937E1B-9CC0-4318-B179-0D54B23B6CDA AClass 560D066B-4848-454D-B92C-F6AE4232057E
来自 B 班 table:
Id Description
560D066B-4848-454D-B92C-F6AE4232057E BClass Description Goes Here!
Entity Framework版本:6.0.0.0
移除B
初始化表格classAClass
:
public AClass()
{
Id = Guid.NewGuid();
//B = new BClass();
}
初始化导致 entity framework 认为您为 AClass
的 B 属性 分配了新值并且没有使用代理分配它。
这是我第一次使用 EF。因此,我可能错过了一些简单的事情,这些事情阻止了我的 BClass 的延迟加载。当我加载 AClass 时,'B' 属性 为空。我原以为它会像坚持的那样被填充。
对于我的示例,我有两个简单的 classes:
public class AClass
{
public AClass()
{
Id = Guid.NewGuid();
B = new BClass();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
public string Name { get; set; }
public virtual BClass B { get; set; }
}
public class BClass
{
public BClass()
{
Id = Guid.NewGuid();
}
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
public string Description { get; set; }
}
在'Context' class:
public DbSet<AClass> AClasses { get; set; }
public DbSet<BClass> BClasses { get; set; }
下面是一个简单的测试。我期待 x.B 会被加载。相反它是空的?
using (var db = new TestContext())
{
AClass a = new AClass();
a.Name = "AClass";
a.B.Description = "BClass Description Goes Here!";
db.AClasses.Add(a);
db.SaveChanges(); // Works. Confirmed both a and a.B are persisted to the database
}
using (var db = new TestContext())
{
AClass x = db.AClasses.Where(a => a.Name == "AClass").FirstOrDefault();
System.Console.WriteLine(x.Name);
System.Console.WriteLine(x.B.Description); // x.B is null. Expected it to load and the .Description property to be "BClass Description Goes Here!"
}
更改已正确保存到数据库中。我还不能post截图。
来自A班table:
Id Name B_Id B7937E1B-9CC0-4318-B179-0D54B23B6CDA AClass 560D066B-4848-454D-B92C-F6AE4232057E
来自 B 班 table:
Id Description 560D066B-4848-454D-B92C-F6AE4232057E BClass Description Goes Here!
Entity Framework版本:6.0.0.0
移除B
初始化表格classAClass
:
public AClass()
{
Id = Guid.NewGuid();
//B = new BClass();
}
初始化导致 entity framework 认为您为 AClass
的 B 属性 分配了新值并且没有使用代理分配它。