Да несложно. Я когда выбирал фреймворк смотрел тяжеловесов(EF и NHibernate). Ибо логики много. Legacy база.. и СУБД которую никто почти не знает(SqlBase). И на основе последнего параметра выбрал разработанный "коммунити" NHibernate, ибо микрософтовский Entity фреймворк думал не настрою под такую древнюю СУБД. Вообще - не ошибся. Сумел на основе ораклового драйвера довольно быстро(полдня) написать свой и все заработало.
Про NHibernate могу сказать, что он не любит Legacy базы. Но если есть такая, то крайне желательно не иметь составных примарных ключей. Поддерживает их, но не любит.
Операции...
PHP:
using(var session = sessionFactory.OpenSession())
{
using(var transaction = session.BeginTransaction()) // Мы апдейтить собрались, поэтому транзакцию открываем
{
var user = session.Get<User>(login);
if(user == null) return;
user.SetPassword(newPassword); // думаю все хеширования, если нужно, делать именно там ;-)
session.Update(user);
transaction.Commit();
}
}
PHP:
using(var session = sessionFactory.OpenSession())
{
using(var transaction = session.BeginTransaction())
{
var adminUsers = session.CreateCriteria<User>()
.Add(Restrictions.Eq("Category", category))
.List<User>();
foreach(var user in adminUsers)
{
session.Delete(user); // гг :)
}
transaction.Commit();
}
}
Для сложных критериев можно использовать, похожий на SQL, язык HQL... изредка использую. Да и напрямую SQL можно.
EF хорош тем, что не нужно прописывать маппинг в отдельном классе(или xml файле), а используются атрибуты. Мне тоже кажется приятным такой вариант. Но кто-то мне говорил, что там проблемы с lazy-loading. В общем я лично его не смотрел подробно, поэтому лучше промолчу
![Smile :) :)](/talk/styles/default/xenforo/smilies/smile.png)