Мое приложение имеет следующую структуру базы данных:
Transactions:
- TransactionID (PK, Identity, Int)
- TypeID (FK, Int)
- Amount (Decimal)
TransactionTypes:
- TypeID (PK, Identity, Int)
- Type (NVarChar)
Они определены в моей заявке как:
public class Transaction
{
public virtual int TransactionID { get; set; }
public virtual TransactionTypes Type { get; set; }
public virtual decimal Amount { get; set; }
}
public enum TransactionTypes
{
Event = 1,
Product = 2
}
Со следующим отображением:
public class TransactionMap : ClassMap<Transaction>
{
public TransactionMap()
{
Table("Transactions");
Id(x => x.TransactionID);
Map(x => x.Type, "TypeID").CustomType<int>();
Map(x => x.Amount);
}
}
Все отлично работает, кроме запросов. Когда я пытаюсь сделать:
session.Linq<Transaction>().Where(t => t.Type == TransactionTypes.Event).ToList();
Выдает ошибку «Несоответствие типов в NHibernate.Criterion.SimpleExpression
: тип ожидаемый тип System.Int32
, фактический тип Entities.TransactionTypes
».
Буду признателен, если кто-нибудь покажет мне правильный способ сопоставить это. Спасибо