私はADO.NET EF 4.0を使用しています。まず、DBからオブジェクトを取得し、このオブジェクトをデタッチし、クライアント側のWebサービスから送信します。ADO.NET Entity Framework 4.0でDBを更新
Webサービス:クライアント側で
private static Project GetObjects(int id)
{
var connSetting = ConfigurationManager.ConnectionStrings["ProjectEntities"];
var conn = new EntityConnection(connSetting.ConnectionString);
conn.Open();
using(var contex= new ProjectEntities(conn))
{
var project = (from p in contex.Projects
where p.ProjectId == id
select p).FirstOrDefault();
contex.Detach(project);
return project;
}
}
は、このオブジェクトが、私はこのオブジェクトDBを更新する必要があるWebサービス側では、バックWebサービスに送信され編集されています。
今、私はこれを使用します。
private static void UpdateObject(Project obj)
{
var connSetting = ConfigurationManager.ConnectionStrings["ProjectEntities"];
var conn = new EntityConnection(connSetting.ConnectionString);
conn.Open();
using (var contex = new ProjectEntities(conn))
{
var entity = (Project)contex.GetObjectByKey(obj.EntityKey);
contex.ApplyCurrentValues(entity.EntityKey.EntitySetName, obj);
contex.SaveChanges();
}
}
更新するこの方法はokですか?最初にオブジェクトcontexからオブジェクトを取得しなければならないので、私は更新することができます。
あなたの提案。あなたの助けとアドバイスありがとうございます
なぜ手動で接続を開いているのか分かりません.ConnectionStringを 'Context'に渡して、必要に応じてデータベース接続を開いて閉じることができるようにするのは不必要な作業のようです。 (正確にはあなたが探していたものではありませんが、それ以外の理由がある場合は、何かを学ぶかもしれません)。 –