因此,我開始將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