1
ApplyCurrentValuesメソッドを使用して10進(19,4)非NULL可能フィールドをゼロ(0)に更新しようとすると、フィールドは更新されず、古い値を保持します。ゼロ以外の値はすべて更新されます。 null可能な属性を持つその他の小数フィールドもゼロに設定できます。Entity Framework 4 ApplyCurrentValuesがNULLにnull以外の10進数列を更新しない
使用したコードは以下の通りです:
public Int32 saveEntity(tblEntity entity)
{
using (conn)
{
Container _context = new Container();
if (entity.ID != 0)
{
var stub = new tblEntity() { ID = entity.ID };
_context.tblEntitySet.Attach(stub);
_context.tblEntitySet.ApplyCurrentValues(entity);
}
else
{
_context.tblEntitySet.AddObject(entity);
}
_context.SaveChanges();
return entity.ID;
}
}
エンティティには常にID(主キー)という名前の列がありますが、上記のコードは期待どおりに機能しますが、ゼロ以外の10進数の列はゼロに更新されません。 – serkanz
nullを許可しないdoubleまたはfloatは同じ動作をしますか? –
ダブルまたはフロートタイプでは試していませんでした。ところで、私が使用するとき の代わりに: var stub =新しいtblEntity(){ID = entity.ID}; _context.tblEntitySet.Attach(スタブ); 私が使用する: _context.tblEntitySet.Attach(_context.tblEntitySet.Single(s => s.ID == entity.ID)); すべてが期待通りに機能します。ところで、私は.NET Framework 3.5アプリケーションで消費されるWCFサービスでEF4を使用します。つまり、「切断された」モードとして機能すると言うことができます。 – serkanz