0

这个问题虽然其他问题相似 ,但似乎并不重复。如果是,请澄清,我很乐意合并。

我想使用包含连接的 linq-to-entities 查询绑定到可写的 DataGridView。模型如下:

替代文字

非规范化的 DataGridView 应该像这样绑定:

替代文字

以下代码绑定但导致只读 DataGridView,因为 linq-to-entities 查询返回匿名类型(请参阅这篇文章)。我陷入了僵局,因为我认为我需要匿名类型来进行非规范化。

var query = from t in iDictionaryContext.DisplayTexts
        from l in iDictionaryContext.Languages
        where
            t.LanguageID == l.LanguageID
        select new
         {
             Key = t.DisplayKey,
             Text = t.DisplayText1,
             Language = l.LanguageName
         };

我也尝试了这里建议的解决方案,但它似乎适用于 linq-to-sql 但不适用于 linq-to-entities。将 bindingsource.datasource 设置为 linq-to-entities 查询时,会引发异常,显示“在 LINQ to Entities 中仅支持无参数构造函数和初始化程序”。

感谢您的意见,

蒂姆

4

1 回答 1

1

只需像这样定义演示类型。您不必在构造函数中传递对象:

public class LanguageDisplayTextPresentation 
{
    public int Key { get; set; }
    public string Text { get; set; }
    public string Language { get; set; }
}

进而

var query = from t in iDictionaryContext.DisplayTexts
    from l in iDictionaryContext.Languages
    where
        t.LanguageID == l.LanguageID
    select new LanguageDisplayTextPresentation 
    {
        Key = t.DisplayKey,
        Text = t.DisplayText1,
        Language = l.LanguageName
    };
于 2011-01-07T23:58:22.647 回答