我正在写一个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