В моем репозитории у меня есть:
public IQueryable<ICustomer> GetByAddress(string address)
{
return from c in GetSession().Linq<ICustomer>()
where c.Address.StartsWith(address)
select c;
}
SQL, который я хотел бы сгенерировать, по сути:
SELECT *
FROM Customer
WHERE address LIKE @address + '%'
Однако всякий раз, когда я делаю
var customers = myRepository.GetByAddress("123 Main Street");
Я получаю исключение NullReferenceException:
System.NullReferenceException не обработано
Message = "Ссылка на объект не установлена на экземпляр объекта."
Source = "NHibernate"
StackTrace:
в NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetEntityName (подкритерии ICriteria, String propertyName)
в NHibernate.Loader.Criteria.CriteriaQueryTranslator.GetCriteria, подклассификацииNHibernate.было бы полезно, я могу добавить его.
Почему это не работает, в то время как тот же самый запрос, за исключением
where c.Address == address
, работает отлично.
Есть идеи?
Редактировать
Я использую FluentNHibernate (где Id - GUID, а Address - строка):
public class CustomerMap: ClassMap<ICustomer>
{
public JobMap()
{
Id(x => x.Id);
...snip...
Map(x => x.Address).Not.Nullable();
}
}