【发布时间】:2010-08-19 22:08:48
【问题描述】:
我有课
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;
编辑
我想返回一个接口,因为我已经读过我应该返回非具体的类。请注意,实际上,这些 Linq 查询位于不同项目的存储库中(以防它成为 Web 或 WPF 应用程序)
【问题讨论】:
-
你的最后一句话毫无意义。您可以从
Item继承子类,并且仍然使用Item类型来访问子类的实例。 -
@Timwi,你是对的,我会编辑以正确传达意图
标签: c# linq nhibernate interface