【发布时间】:2010-04-29 01:25:01
【问题描述】:
所以我开始将 Entity Framework 4 添加到旧版 Web 应用程序 (ASP.NET WebForms) 中。
首先,我从数据库中自动生成了一些实体。我也想应用存储库模式。
有一个名为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();
}
请注意,Visitor 的属性比这些属性多,我只是不想获取所有内容,因为有一些繁重的 TEXT 字段。
该列表随后被绑定到转发器,当尝试执行 <%# Eval('EmailAddress') #%> 时,它会引发以下异常。
The entity or complex type 'Model.Visitor' cannot be constructed in a LINQ to Entities query.
A) 为什么会这样?我该如何解决这个问题?我是否需要选择一个匿名类型,然后使用它来部分初始化我的实体???我不想做一个 SELECT * 因为这里有一些我不需要的繁重的 TEXT 列
B) 为什么我看到的每个示例都使用“select new”(匿名对象)而不是初始化已知类型?除非您正在检索数据并将其显示在同一层中,否则匿名类型是无用的。据我所知匿名类型不能从方法返回?那么它们的真正意义是什么???
谢谢大家
【问题讨论】:
-
tblVisitor和Visitor是什么关系?
-
对不起,错字。出于示例的目的,这都是访问者。
标签: c# asp.net entity-framework linq-to-entities anonymous-types