【发布时间】:2010-12-27 14:32:40
【问题描述】:
这在 LINQ-to-SQL 中工作:
var customersTest = from c in db.Customers
select new
{
Id = c.Id,
Addresses = from a in db.Addresses where c.Id.ToString() ==
a.ReferenzId select a
};
foreach (var item in customersTest)
{
Console.WriteLine(item.Id);
}
但 Entity Framework 中的一个类似示例收到一条错误消息,基本上说它无法“将其转换为 SQL”,这是德语的原始错误消息:
"'LINQ to Entities' erkennt die 方法 'System.String ToString()' nicht, und diese Methode kann nicht in einen Speicherausdruck übersetzt 韦尔登。”
翻译:
"'LINQ to Entities' 无法识别 方法'System.String ToString()', 这个方法不能翻译成 记忆表达。
谁能阐明我们如何让这种语句在实体框架中工作或解释为什么会出现此错误?
【问题讨论】:
-
Id 已经是字符串了吗?不知道为什么这会导致 EF 出现问题,但错误消息似乎表明这是绊脚石。你会认为 string.ToString() 会很快工作:P
-
Id 在 L2S 示例中是一个整数。在我们真实的 EF 示例中,它是一个 GUID。有趣的是,ToString() 是 intellisense 的,它可以编译但会出现运行时错误。
-
@Edward Tanguay:我刚刚看到你的问题并添加了一个答案,我希望即使过了这么长时间它仍然有用......
标签: c# linq linq-to-sql entity-framework