NHibernateを使用してクラスPersonをデータベースにマップしています。DBからオブジェクトをロードし、それを別のクライアントに送信します。最初のクライアントは、NameプロパティとCountryプロパティを変更します。2番目のクライアントはNameプロパティのみを変更します。次に、両方が変更されたオブジェクトをサーバーに返します。最初のクライアントからデータを保存すると(次に正しく保存され、両方)、名前と国が更新されました。2番目のクライアントからデータを保存するとき-問題があります。最初のクライアントからのデータを上書きし、国の新しい名前と初期値を保存しました。
名前の値のみを保存し、国の値を上書きしないようにNHibernateに指示するにはどうすればよいですか?
public class Person
{
public string Name { get; set; }
public string Country { get; set; }
}
public static List<Person> GetEntities()
{
var factory = CreateSessionFactory();
using (ISession session = factory.OpenSession())
{
return session.CreateCriteria<Person>().List<Person>();
}
}
public static void SaveEntities(List<Person> entities)
{
var factory = CreateSessionFactory();
using (ISession session = factory.OpenSession())
{
using (var t = session.BeginTransaction())
{
foreach (var person in entities)
{
session.Merge(person);
}
t.Commit();
}
}
}
PS:私の悪い英語でごめんなさい