【问题标题】:Expression of type 'Territory_Manager.HtmlAddressGenerator+Entry' cannot be used for return type 'System.Object'“Territory_Manager.HtmlAddressGenerator+Entry”类型的表达式不能用于返回类型“System.Object”
【发布时间】:2013-03-23 00:03:01
【问题描述】:

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

我有以下 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机器上工作?但这不是问题。我只是想知道这个问题是否有任何解决方法,或者我是否监督过某事。很重要?我应该怎么做才能执行代码?请帮忙。

【问题讨论】:

  • 没人知道答案吗?忘了说这是c#代码。

标签: c# sql linq frameworks entity


【解决方案1】:

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

错误是 HtmlAddressGenerator.Entry 是一个结构并且没有默认构造函数。所以将结构体改成类并添加默认构造函数就解决了我的问题。

【讨论】:

    猜你喜欢
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多