NHibernate - как сохранить объект с предложением where - PullRequest
0 голосов
/ 07 декабря 2008

Я не знаю, как сохранить объект с предложением where. Мне это нужно, чтобы предотвратить сохранение объекта с диапазоном дат, перекрывающихся с другими.

public class TaskEvent
{
    public DateTime StartDate {get;set;}
    public DateTime EndDate {get;set;}
}

Я хочу проверить совпадение критериев в операции сохранения, но не знаю как.

Есть идеи?

Ответы [ 3 ]

2 голосов
/ 07 декабря 2008

Вам нужно выяснить в коде, какие объекты нужно сохранить, а затем сохранить их. Это бизнес-логика, и ее не следует вводить в постоянные операции. ИМО, даже если бы NH мог это поддержать.

1 голос
/ 18 января 2010

Вы можете использовать HQL для специальных запросов на обновление

session.CreateQuery("UPDATE TaskEvent SET ... WHERE ID = :ID and ...")
.SetInt32("ID", ID)
//.SetDateTime("", )
//.SetDateTime("", )
.ExecuteUpdate();

или для выполнения более NHibernate-способа ... получить требуемые TaskEvents (предложение where), обновить их свойства и зафиксировать транзакцию.

0 голосов
/ 18 января 2010

Один из подходов состоит в том, чтобы определить, какие объекты TaskEvent вы не хотите сохранять в коде, и исключить их из ISession, чтобы они не сохранялись.

...