具有实体框架 4.3.1 的导航属性 null

本文关键字:导航 属性 null 实体 框架 | 更新日期: 2023-09-27 18:33:05

我正在使用实体框架 4.3.1,我的导航属性遇到了一些问题。

在我的上下文中,我启用了延迟加载:

public MyContainer()
        : base(ConnectionString, ContainerName)
{
    this.ContextOptions.LazyLoadingEnabled = true;
}

此外,我已经将属性设置为虚拟(实际上我从我的模型中生成了它(:

public virtual Driver Driver
{
    get { return _driver; }
    set
    {
        if (!ReferenceEquals(_driver, value))
        {
            var previousValue = _driver;
            _driver= value;
            FixupDriver(previousValue);
        }
    }
}
private Driver _driver;

这是在一个名为 Ride 的实体中。但是,当我访问myContext.Ride.Driver它是空的。这很奇怪,因为当我在运行时检查 Ride 实体时,我可以看到外键实际上填充了预期驱动程序的 ID。

我还需要做什么吗?

当我生成新的行程时,我设置了驾驶员 ID,但随后我从中获取 ID 的驾驶员不会自动添加为导航属性。


好的,我只是自己解决了它,所以我将分享答案:我需要将驱动程序实体附加回上下文。 myContext.Driver.Attach(Driver(.然后我可以做:Ride.Driver = Driver 而不是 Ride.DriverID = Driver.DriverID。

在代码中,我正在这样做:

db.Driver.Attach(Driver); // Driver is a public property in my class
myNewRide.Driver = Driver;
db.SaveChanges();

具有实体框架 4.3.1 的导航属性 null

好的,我只是自己解决了它,所以我将分享答案: 我需要将驱动程序实体附加回上下文。 myContext.Driver.Attach(Driver(.然后我可以做:Ride.Driver = Driver 而不是 Ride.DriverID = Driver.DriverID