このコードは、実際に変更を保存するために失敗します。Entity Frameworkを持つ、厳密に型指定されたASP.NET MVC
//
// POST: /SomeType/Edit/5
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(Guid id, SomeType Model)
{
db.AttachTo(Model.GetType().Name, Model);
db.ApplyPropertyChanges(Model.EntityKey.EntitySetName, Model);
db.SaveChanges();
return RedirectToAction("Index");
}
ASP.NET MVCは、独立のEntityState値を持つ部署タイプEntityObjectように、オブジェクトモデルを作成し、 。
AttachToメソッドを使用した後、EntityStateは変更なしになります。
MSDN on Attaching Objects (Entity Framework)
オブジェクトは変更なし状態でオブジェクト コンテキストに取り付けられています。理由は、その変わらず状態の
、方法ApplyPropertyChangesは何もしません。
代わりに状態を変更したいです。です。
を独立
MSDN on EntityState Enumeration
オブジェクトが存在するが、それは、オブジェクト サービスによって追跡されていません。エンティティは の状態で、 を作成した直後、オブジェクト のコンテキストに追加する前にこの状態になります。エンティティは、デタッチ メソッドを呼び出すことによってコンテキストが から削除された後、または NoTrackingMergeOptionを使用してロードされた後、この 状態にもなります。それは コンテキストに又はSaveChangesメソッドを と呼ばれていたことを前回 ためロードされたので
不変オブジェクトは変更されていません。
修飾
オブジェクトが変更されるが、SaveChangesメソッドを が呼び出されていません。
明示的にEntityObjectのEntityStateプロパティをModifiedに設定することはできません。読み取り専用です。
厳密に型指定されたMVCコントローラをEntityObjectsで使用することは不可能ですか?
http://stackoverflow.com/questions/922402/strongly-typed-asp-net-mvc-with-ado-net-entity-framework –