1

Entity Framework 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;

これはライドと呼ばれるエンティティにあります。ただし、アクセスmyContext.Ride.Driverするとnullです。実行時に Ride エンティティを検査すると、外部キーが予想されるドライバーの ID で実際に満たされていることがわかるため、これは奇妙です。

他に何かする必要がありますか?

新しい Ride を生成するときにDriverIDを設定しましたが、その後、ID を取得した Driver が Navigation プロパティとして自動的に追加されません。


さて、私はそれを自分で解決したので、答えを共有します: Driver エンティティをコンテキストに戻す必要がありました。myContext.Driver.Attach(ドライバー)。次に、Ride.DriverID = Driver.DriverID の代わりに Ride.Driver = Driver を実行します。

コードで私はこれをやっています:

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

1 に答える 1

0

さて、私はそれを自分で解決したので、答えを共有します: Driver エンティティをコンテキストに戻す必要がありました。myContext.Driver.Attach(ドライバー)。Ride.DriverID = Driver.DriverID の代わりに Ride.Driver = Driver

于 2012-05-07T12:47:16.957 に答える