因此,我开始将Entity Framework 4添加到旧版Web应用程序(ASP.NET WebForms)中。为什么LINQ to Entities不会让我初始化实体的某些属性?
作为一个开始,我已经从数据库中自动生成了一些实体。另外我想申请存储库模式。
有一个叫Visitor
其仓库中的实体VisitorRepository
在VisitorRepository我有以下方法:
public IEnumerable<Visitor> GetActiveVisitors()
{
var visitors =
from v in _context.Visitors
where v.IsActive
select new Visitor
{
VisitorID = v.VisitorID,
EmailAddress = v.EmailAddress,
RegisterDate = v.RegisterDate,
Company = v.Company,
Position = v.Position,
FirstName = v.FirstName,
LastName = v.LastName
};
return visitors.ToList();
}
请注意,游客比那些更多的属性,我只是不希望得到一切,因为有一些沉重的TEXT字段。
该列表然后绑定到一个中继器,当试图做<%# Eval('EmailAddress') #%>
它会抛出以下异常。
The entity or complex type 'Model.Visitor' cannot be constructed in a LINQ to Entities query.
A)为什么会发生这种情况?我该如何解决这个问题?我需要选择一个匿名类型,然后用它来部分初始化我的实体吗? B)为什么我看到的每个示例都使用'select new'(匿名对象),而不是使用'select new'(匿名对象),而不是使用'select new'初始化一个已知类型?除非您检索数据并将其显示在同一图层中,否则匿名类型是无用的。据我所知,匿名类型不能从方法返回?那么他们的真正意义在哪?
谢谢大家
tblVisitor和Visitor之间有什么关系? – 2010-04-29 01:30:00
对不起,错字。这个例子的目的都是访客。 – emzero 2010-04-29 01:33:32