C# 实体框架4.3.1的导航属性为空
我使用的是实体框架4.3.1,导航属性有问题 在我的上下文中,我启用了延迟加载:C# 实体框架4.3.1的导航属性为空,c#,.net,entity-framework,navigation-properties,C#,.net,Entity Framework,Navigation Properties,我使用的是实体框架4.3.1,导航属性有问题 在我的上下文中,我启用了延迟加载: public MyContainer() : base(ConnectionString, ContainerName) { this.ContextOptions.LazyLoadingEnabled = true; } 此外,我还将该属性设置为虚拟(实际上我是从模型生成的): 这是在一个名为Ride的实体中。但是,当我访问myContext.Ride.Driver时,它是空的。这很奇怪
public MyContainer()
: base(ConnectionString, ContainerName)
{
this.ContextOptions.LazyLoadingEnabled = true;
}
此外,我还将该属性设置为虚拟(实际上我是从模型生成的):
这是在一个名为Ride的实体中。但是,当我访问myContext.Ride.Driver时,它是空的。这很奇怪,因为当我在运行时检查骑乘实体时,我可以看到外键实际上是用预期驾驶员的ID填充的
还有什么我需要做的吗
当我生成一个新的骑乘时,我设置了DriverID,但随后我从中获取ID的驾驶员不会自动添加为导航属性
好的,我只是自己解决了这个问题,所以我将分享答案:我需要将驱动程序实体附加回上下文。myContext.Driver.Attach(驱动程序)。然后我可以做:骑。驾驶员=驾驶员,而不是骑。DriverID=驾驶员。DriverID 在代码中,我正在这样做:
db.Driver.Attach(Driver); // Driver is a public property in my class
myNewRide.Driver = Driver;
db.SaveChanges();
好的,我只是自己解决了这个问题,所以我将分享答案:我需要将驱动程序实体附加回上下文。myContext.Driver.Attach(驱动程序)。然后我可以做:Ride.Driver=Driver而不是Ride.DriverID=Driver.DriverID好的,我只是自己解决了它,所以我将分享答案:我需要将Driver实体附加回上下文<代码>myContext.Driver.Attach(驱动程序)。然后我可以做:
Ride.Driver=Driver
而不是Ride.DriverID=Driver.DriverID
。请写下这个作为答案,然后标记它,这样每个人都会看到它被解决了,谢谢。:-)几乎就是我的意思。你看到问题下面的“答案栏”了吗?我想把你的答案放在那里,因为这样你就可以点击“标记为答案”。
db.Driver.Attach(Driver); // Driver is a public property in my class
myNewRide.Driver = Driver;
db.SaveChanges();