キャッシュから取得したオブジェクトとのエンティティ関係を手動で作成したいと考えています。
Car car = Cache.GetCarById(1); // takes this from cache
SteeringWheel steeringWheel = Cache.GetSteeringWheelById(1); //takes this from DB
//also saves in cache
car.SteeringWheel = steeringWheel;
上記の課題について
2 つのオブジェクトが異なる ObjectContext オブジェクトに関連付けられているため、2 つのオブジェクト間の関係を定義できません。
私は次のことを試しました:
steeringWheel
そこに保存された後にキャッシュから戻ります(したがって、同じエンティティに対してキャッシュへの2つのリクエストを行います)- キャッシュされる前に、各エンティティを独自のコンテキストから切り離します
上記のいずれも機能しません。コンテキストを取得できる場合は、それにcar
アタッチsteeringWheel
しますが... どのようなコンテキストですか? コンテキストはオブジェクトと一緒にキャッシュに保存されますか?どうすれば取得できますか?
コンテキストは実際には必要ないことに注意してください。このデータをそのまま表示しているだけです。
LE : コンテキストは、静的メソッドから使用される、1 つの HTTP リクエスト全体で共有されるコンテキストです。
public static myEntities Context
{
get
{
string ocKey = "ocm_" + HttpContext.Current.GetHashCode().ToString("x");
if (!HttpContext.Current.Items.Contains(ocKey))
HttpContext.Current.Items.Add(ocKey, new myEntities());
return HttpContext.Current.Items[ocKey] as myEntities;
}
}