我創建了一個函數導入它可在我的上下文對象GetJournalViewItemsQuery()
功能導入返回一個名爲JournalViewItem的複雜類型。
現在,當我試圖將JournalViewItem加載到我的應用程序DTO稱爲JournalEntry的我拿出了錯誤:
錯誤7無法隱式轉換類型「MyApp.Infrastructure.Models.JournalEntry」到「MyApp.SqlData。 JournalViewItem」
這是代碼:
var journalEntry = Context.GetJournalViewItemsQuery()
.Where(i => i.JournalItemId == _journalEntryId)
.Select(x => new JournalEntry(x.JournalItemId,
x.HeaderText,x.JournalText, x.LastUpdatedOn,
x.JournalItemTypeId)).Single();
錯誤發生在 「新JournalEntry的」 行。
我的問題:如何將JournalViewItem複雜類型轉換爲我的DTO?
謝謝
@JanR的建議後,我仍然有同樣的問題。修改後的代碼是:
var journalEntry = Context.GetJournalViewItemsQuery()
.Where(i => i.JournalItemId == _journalEntryId)
.Select(x => new JournalEntry
{
JournalEntryNumber = x.JournalItemId,
HeaderText = x.HeaderText,
BodyText = x.JournalText,
LastUpdatedOn = x.LastUpdatedOn,
JournalEntryType = x.JournalItemTypeId
}).Single();
我發現了我的問題的原因。我沒有提及(我的道歉),我正在從WCF RIA域服務爲Silverlight應用程序生成代碼。因此,需要執行Context.GetJournalViewItemsQuery(),然後我可以使用@Chuck.Net和JanR建議的LINQ表達式在我的回調方法上查詢結果。
這裏是工作的代碼對那些誰可能會感興趣:
public IList<JournalEntryHeader> GetJournalEntryHeaders()
{
PerformQuery<JournalViewItem>(Context.GetJournalViewItemsQuery(), GetJournalEntryHeadersFromDbComplete);
return _journalHeaders;
}
void PerformJournalEntryHeadersQuery(EntityQuery<JournalViewItem> qry,
EventHandler<EntityResultsArgs<JournalViewItem>> evt)
{
Context.Load<JournalViewItem>(qry, r =>
{
if (evt != null)
{
try
{
if (r.HasError)
{
evt(this, new EntityResultsArgs<JournalViewItem>(r.Error));
}
else if (r.Entities.Count() > 0)
{
evt(this, new EntityResultsArgs<JournalViewItem>(Context.JournalViewItems));
}
else if (r.Entities.Count() == 0 && _currentJournalItemsPage > 0)
{
GetPrevPageJournalEntryHeadersAsync();
}
}
catch (Exception ex)
{
evt(this, new EntityResultsArgs<JournalViewItem>(ex));
}
}
}, null);
}
void GetJournalEntryHeadersFromDbComplete(object sender, EntityResultsArgs<JournalViewItem> e)
{
if (e.Error != null)
{
string errMsg = e.Error.Message;
}
else
{
_journalHeaders = e.Results
.Select(
x => new JournalEntryHeader(x.JournalItemId,
x.ProjectName,
x.TopicName,
x.HeaderText,
x.EntryTypeName,
x.LastUpdatedOn)).ToList();
GetJournalEntryHeadersComplete(this, new JournalEntryHeaderItemsEventArgs(_journalHeaders));
}
}
感謝@JanR的幫助。我嘗試了你的建議,但仍然出現了同樣的錯誤。我想你可能錯過了對象初始值設定項的大括號。 – user1309226
下面的代碼: VAR JournalEntry的= Context.GetJournalViewItemsQuery() 。凡(I => i.JournalItemId == _journalEntryId) 。選擇(X =>新JournalEntry的 { JournalEntryNumber = x.JournalItemId, 的HeaderText = X .HeaderText, BodyText = x.JournalText, LastUpdatedOn = x.LastUpdatedOn, JournalEntryType = x.JournalItemTypeId })。Single(); – user1309226
確實添加了{},在那裏發錯了。那麼它能工作嗎? – JanR