2011-04-20 34 views
0

我有以下代碼:幫助EntityQuery工作的Silverlight C#

var data = (sender as Button).DataContext as Web.Booking; 

EntityQuery<Web.Ticket> ticketQuery = 
    from t in _ticketContext.GetTicketsQuery() 
    where t.ticketId == data.ticketId 
    select t; 

LoadOperation<Web.Ticket> loadTicket = this._ticketContext.Load(ticketQuery); 
loadTicket.Completed += (s, args) => { MessageBox.Show("Loaded Tickets!"); }; 

ticketDomainDataSource.DataContext = loadTicket.AllEntities; 

var ticketData = ticketDomainDataSource.DataContext as Web.Ticket; 
string ticketName = ticketData.ticketName; 

是我遇到的麻煩的主要代碼是:

var ticketData = ticketDomainDataSource.DataContext as Web.Ticket; 
    string ticketName = ticketData.ticketName; 

它返回一個錯誤:

Object reference not set to an instance of an object.

任何人都可以幫助我瞭解我在做什麼錯在這裏,我無法弄清楚什麼是空以及如何返回適當的數據。

感謝

+2

顯然'ticketData'爲null。也許'ticketDomainDataSource.DataContext'不能轉換爲'Web.Ticket'。檢查周圍地區。 – 2011-04-20 18:53:08

+0

我檢查了過去30分鐘,無法理解爲什麼它不起作用 – 2011-04-20 20:08:14

回答

0

你的問題很可能是DataContext的不能轉換爲Web.Ticket。如果您查看C#的文檔 - as在轉換失敗時返回null。見 - http://msdn.microsoft.com/en-us/library/cscsdfbt%28v=vs.71%29.aspx

如果你改變你的代碼行

var ticketData = (Web.Ticket) ticketDomainDataSource.DataContext; 

你應該得到更好的鑄件錯誤。

+0

無法將DomainContext轉換爲Web.Show – 2011-05-02 18:14:56