实体框架投影崩溃VS.

时间:2012-04-20 14:30:44

标签: c# linq entity-framework linq-to-entities

我有一个行表和一个标签表。每行可以有来自标签表的多个标签。我试图建立一个包含所有标签的清单,并有一个复选框,显示该行是否有该标签,如果它已经检查过。

我已经将数据网格视图设置为2列。一个绑定到Name,另一个checkboxcell绑定到IsTagged

我试图使用投影:

-> line comes into constructor
var tagsList = from t in rs.Tags select new { Name = t.Name, IsTagged = line.Tags.Where(x => x.Name == t.Name).Any() };
dgvTags.DataSource = tagsList;

我的实体图如下:

enter image description here

更新:

我重新完成了整个事情,从2005年将后端数据库升级到2008r2,现在它似乎工作但是给出了以下错误...它没有崩溃,但在数据网格中没有显示任何项目。

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为问题是由于在linq-to-entities查询中使用了line参数的集合。

我会尝试重写查询,只使用这样的基本类型:

var tagNames = line.Tags.Select(x => x.Name).ToList();
var tagsList = from t in rs.Tags 
               join n in tagNames on t.Name equals n into tags
               select new 
               {
                 Name = t.Name, 
                 IsTagged = tags.Any() 
               };