Я не знаю, как сохранить объект с помощью предложения where. Мне это нужно, чтобы предотвратить сохранение объекта с перекрытием диапазона дат с другими.
public class TaskEvent
{
public DateTime StartDate {get;set;}
public DateTime EndDate {get;set;}
}
Я хочу проверить совпадение критериев в операции сохранения, но не знаю, как это сделать.
Есть идеи?
Мне нужно что-то вроде этого: UPDATE TaskEvent SET ... WHERE ID = @ID {как добавить сюда некоторые критерии}





Вам нужно выяснить в коде, какие объекты нужно сохранить, а затем сохранить их. Это бизнес-логика, и ее не следует вводить в операции сохранения. ИМО, даже если бы NH мог это поддержать.
Да, я понимаю, но это не ключ к разгадке. Мне нужно знать, как поместить что-то вроде критериев в место, когда я вызываю session.Update (). Например: UPDATE TaskEvent SET ... WHERE ID = @ID {как добавить сюда некоторые критерии}
Вы можете использовать HQL для специальных запросов на обновление
session.CreateQuery("UPDATE TaskEvent SET ... WHERE ID = :ID and ...")
.SetInt32("ID", ID)
//.SetDateTime("", )
//.SetDateTime("", )
.ExecuteUpdate();
или сделать что-то более NHibernate ... получить необходимые TaskEvents (предложение where), обновить их свойства и зафиксировать транзакцию.
Один из подходов состоит в том, чтобы повторно определить, какие объекты TaskEvent вы не хотите сохранять в коде, и исключить их из ISession, чтобы они не сохранялись.
Хм? Здесь не так много информации, чтобы продолжать. Приведите, пожалуйста, более полный пример кода.