SharpArch.Core.PreconditionException: для лучшей ясности и надежности, Объекты с назначенным идентификатором должны вызвать Сохранить или Обновить - PullRequest
1 голос
/ 26 марта 2010

Когда я сохраняю сущность с назначенным идентификатором, я получаю

SharpArch.Core.PreconditionException: Для большей ясности и надежности, Объекты с назначенным идентификатором должны позвонить Сохранить или обновить

Мой класс

public class CompanyUserRepository :
RepositoryWithTypedId<CompanyUser, string>, ICompanyUserRepository
{
   public override CompanyUser SaveOrUpdate(CompanyUser entity)
   {
     var user = base.SaveOrUpdate(entity);
     //Do some stuff
     return user;
   }
}

Как мне сохранить этот объект?

RepositoryWithTypedId не предоставляет метод Save

Смежный вопрос . Это говорит вам причину, но я не нашел способ острой архитектуры сделать Save.

1 Ответ

3 голосов
/ 26 марта 2010

Покопавшись в примере NorthWind в репозитории S # arp, я нашел ответ.

Класс репозитория должен быть производным от NHibernateRepositoryWithTypedId

например.

public class CustomerRepository : NHibernateRepositoryWithTypedId<Customer, string>, ICustomerRepository
{
    public List<Customer> FindByCountry(string countryName) {
        ICriteria criteria = Session.CreateCriteria(typeof(Customer))
            .Add(Expression.Eq("Country", countryName));


        return criteria.List<Customer>() as List<Customer>;
    }
}
...