Linq to SQL和SQL Server Compact Error:“解析查询时出错。”

时间:2010-03-08 03:32:44

标签: linq-to-sql sql-server-ce

我创建了一个SQL服务器压缩数据库(MyDatabase.sdf),并用一些数据填充它。然后我运行了SQLMetal.exe并生成了一个linq到sql类(MyDatabase.mdf)

现在我正在尝试从一个表中选择相对简单的选择的所有记录,我得到错误:

  

“解析查询时出错。[令牌行号= 3,令牌行偏移= 67,令牌错误= MAX]”

这是我的选择代码:

public IEnumerable<Item> ListItems()
{
    MyDatabase db_m = new MyDatabase("c:\mydatabase.sdf");
    return this.db_m.TestTable.Select(test => new Item()
        {
            ID = test.ID,
            Name = test.Name,
            RequestData = test.RequestData != null ? test.RequestData.ToString() : null,   
            Url = new System.Uri(test.Uri)
        }.AsEnumerable();
}

我已经读过Linq to SQL与Sql Compact一起使用,我还需要其他一些配置吗?

3 个答案:

答案 0 :(得分:5)

它可能是一个错误的NVARCHAR(MAX)吗?我认为我之前在sql compact edition中看到过这样的错误,并且我记得它与sql compact edition不支持NVARCHAR(MAX)数据类型这一事实有关。这也可能是您在异常中看到“令牌错误= MAX”消息的原因吗?

答案 1 :(得分:0)

为什么需要在RequestData上进行转换?你的班级是什么样的?你能这样设置吗?

    RequestData = test.RequestData  

答案 2 :(得分:0)

我还试过在Winforms应用程序中为Linq-to-sql使用SQLMetal作为SQL Server紧凑版的方法 。 在遇到一些问题后,我跳过了Linq-to-SQL方法并采用了Linq-To-Entities方法。对于我正在这样做的查询,语法类似于99%; - )

此外,使用edmx设计器时,可以轻松更新,删除和添加表格。(在设计器中使用拖放或右键单击等效项。)