у меня есть класс
public class Item : IItem
{
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual bool IsActive { get; set; }
}
public interface IItem
{
Guid Id { get; set; }
string Name { get; set; }
bool IsActive { get; set; }
}
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.IsActive);
}
}
В моей базе данных я создал пять элементов. У трех флаг IsActive установлен в true, а у двух — в false.
При использовании интерфейса он возвращает все пять элементов:
var q = from i in session.Linq<IItem>()
where i.IsActive == true
select i;
Однако при использовании конкретного класса он возвращает правильные три элемента:
var q = from i in session.Linq<Item>()
where i.IsActive == true
select i;
EDIT
Я хотел бы вернуть интерфейс, потому что я читал, что должен возвращать неконкретные классы. Обратите внимание, что на самом деле эти запросы Linq находятся в репозитории в другом проекте (на случай, если это станет веб-приложением или приложением WPF).
Item
и по-прежнему использовать типItem
для доступа к экземплярам подкласса. - person Timwi   schedule 20.08.2010