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();