“Territory_Manager.HtmlAddressGenerator + Entry”类型的表达式不能用于返回类型“System.Object”

时间:2013-04-01 20:41:19

标签: c# sql linq frameworks entity

我真的希望有人可以帮助我。

我有以下sql语句(只是用''替换了实际列值。)

        string sqlstatement = @"
        SELECT 
            'a' as Street,
            1 as StreetNumber,
            'a' as StreetAddition,
            'a' as Family,
            'a' as FirstNames,
            'a' as VisitedBy
        FROM Person pOuter
        INNER JOIN House h
            ON pOuter.HouseId = h.Id
        INNER JOIN Street s
            ON h.StreetId = s.Id
            AND s.TerritoryID = (SELECT TOP 1 Id FROM Territory WHERE Number=" + selectedEntry.Number + @" AND CityId = (SELECT TOP 1 Id FROM City WHERE Name ='" + selectedEntry.City.Trim() + @"'))
        GROUP BY 
            pOuter.LastName, 
            pOuter.HouseId
        ORDER By Street ASC, StreetNumber ASC, StreetAddition ASC, Family ASC, FirstNames ASC";

并尝试执行它并使用以下命令生成强类型序列。

database.ExecuteStoreQuery<HtmlAddressGenerator.Entry>(sqlstatement);

其中database是我的实体框架数据库上下文(左右)。

到达此行后,调试器会抛出错误。

如果在SQL Management Studio中执行,则sql语句本身可以正常工作。 我究竟做错了什么?它一直有效,直到我安装了win 8.也许它与win 8无关,为什么这个代码适用于XP机器?但这不是问题。我只是想知道是否有针对该问题的解决方法或我监督过某事。很重要?我该怎么做才能执行代码?请帮忙。

1 个答案:

答案 0 :(得分:1)

此处描述了此问题的解决方案Entity Framework 4 ExecuteStoreQuery<T> -- unable to results to object-type property

错误是HtmlAddressGenerator.Entry是一个结构,没有默认的constrcutor。因此,将结构体更改为类并添加默认构造函数已解决了我的问题。