0

私のアプリケーションでは、データベース内のエンティティの1つのプロパティを更新する必要がある場合が多くあります。インターネットではDynamicUpdate()、Fluent NHibernateの動作を変更して、プロパティのみを更新するようにする必要があることを読みました!= null

だから私はこのように私のマッピングを書きました:

public class Building
{
    public virtual Guid Id { get; set; }

    public virtual int ConstructionPhase { get; set; }

    public virtual string Name { get; set; }

    [some other properties]
}

public class BuildingMap : ClassMap<Building>, IMappedEntity
    {
        public BuildingMap()
        {
            DynamicUpdate();
            SelectBeforeUpdate();

            Id(x => x.Id);
            Map(x => x.ConstructionPhase);
            Map(x => x.Name);
            [some other properties]
        }
    }

しかし、エンティティを更新してnameプロパティを空のままにしようとすると、データベースから名前が削除されます。

Fluent NHibernateを別の方法で構成する必要がありますか、それとも何が問題ですか?

4

1 に答える 1

4

DynamicUpdate()変更されたプロパティのみを保存するようにNHibernateに指示するため、オブジェクトをロードし、単一のプロパティを変更し、セッションをフラッシュすると、変更された列のみが更新されます。

更新:データベースに移動せずに単一のプロパティを更新するには、hqlを使用します

var affectedRows = session.CreateQuery("UPDATE MyEntity SET SomeProperty=:newValue WHERE Id=:id")
    .SetParameter("newValue", value)
    .SetParameter("id", id)
    .ExecuteUpdate();
于 2012-07-31T12:39:12.433 に答える