2012-02-22 7 views
3

私は自分のコンテキストとしてEDMXスキーマを使用しています。EF4 - エンティティ状態を変更するContext.Entryを使用できません

public void SaveProduct(Product product) 
{ 
    if (product.ProductID == 0) 
     context.Products.Add(product); 
    else 
     context.Entry(product).State = EntityState.Modified; 
    context.SaveChanges(); 
} 

をしかし、このプロジェクトでは、私は私のインテリセンスで.Entryを(表示されていない、それが示唆されています:私は、スキーマを使用していなかった以前のプロジェクトでは、私はこのようなエンティティの状態を変更することができ私がちょうどそれをタイプすれば名前空間参照。

エンティティを変更して保存しようとしました。それは適切に働いた。

私の2つの質問は次のとおりです: - なぜ.Entryは私のインテリセンスにもうないのですか? - 永続的なコンテキストでエンティティの状態を変更する必要が本当に必要ですか、それとも正しく行うために.Netに依存できますか?

答えて

6

以前はDbContext APIを使用していましたが、今はObjectContext APIを使用していると思います。これらはEFを使用する2つの異なる方法であり、それぞれ独自の方法があります。あなたがこの(のObjectContext API)を持っているかどうかを確認します。

context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified); 

あなたの2番目の質問に - あなたは切り離さシナリオ(とあなたのエンティティのインスタンスが同じコンテキスト・インスタンスによってロードされていないで作業している場合は、エンティティをアタッチし、状態を設定する必要がありますそれが保存されます)。

関連する問題