我正在寫一個asp.net mvc應用程序來學習實體框架,並且遇到了一個我不知道如何處理的問題。爲簡單起見讓我們如下表結構:實體框架 - 加入空值 - NullReferenceException被用戶代碼未處理
Movie
ID (int, not null, auto increment)
Name (varchar)
GenreID (int)
和
Genre
ID (int, not null, auto increment)
Name (varchar)
Movie.GenreID是使用可視化一個FK參照Genre.ID
我已經在所有的表的帶來設計師在VS 2008,並嘗試以下Linq查詢:
IEnumerable<Movie> movieList = from f in dataContext.MovieSet.Include("Genre").ToList();
我可以輸出數據在視圖中使用:
<%= Html.Encode(movieList.Genre.Name) %>
一切正常,直到我有一個空的GenreID電影表中的項目。有什麼我可以做這個查詢,使其仍然能夠輸出(只要在適用時留空)還是我做了一些可怕的錯誤?
這對我對Linq和EF都是新手很有幫助。有沒有辦法做一個像上面發佈的那樣的查詢,可以返回爲或可以轉換爲在將表格架構導入EF時創建的強類型類? – mynameiscoffey 2009-12-27 02:51:34
迴應你的第二個例子,如果我要將「select new」部分改爲: select new f, Genre =(f.Genre == null)?新類型():f.Genre } 但我仍然遇到上述類型鑄造問題。 再次感謝您的回覆 - 我非常感謝您向我提供的以上示例。 – mynameiscoffey 2009-12-27 02:59:15
你可以像這樣返回強類型的類。你唯一需要記住的是Linq不支持帶參數的構造函數。而是使用對象初始化器語法:'select new Movie {Name = f.Name,GenreName = f.Genre == null? 「」:g.Genre.Name};' – 2009-12-27 20:12:07