0

私が達成したいのは、Db 内のエンティティの特定のプロパティのみを更新することです。(UPDATE Foo Set Status = 'kool' WHERE ID = 99 のようなものを模倣するには)。

私はこれを試します:

    public void SetFooStatus(Foo foo)
            {

                var fooToUpdate = new Foo()
                {
                    Id = foo.Id,
                    Status =foo.Status
                };

                this.Context.Foos.Attach(fooToUpdate);

                this.Context.Entry(fooToUpdate).Property("Status").IsModified = true;

                this.Context.ValidateOnSaveEnabled = false;

                this.dbSet.Attach(entityToUpdate); // This is IDbSet<Foo>
                this.dbSet.Entry(entityToUpdate).State = EntityState.Modified;

                this.dbSet.SaveChanges();

            }

問題は、State を EntityState.Modified に設定すると、すべてのプロパティが Chagned -IsModified returns true- としてマークされることです。

コメントアウトすると、更新は完了しません-データベースに変更はありません。

質問: Db の他のフィールドに触れずに foo オブジェクトの Status プロパティのみを更新するように EF を強制するにはどうすればよいですか?

4

1 に答える 1