我拥有的是一个数据库,其中大多数表键都是 Guid 的。问题是,如果我尝试执行 LINQ to Entity 语句并将我可用的 Guid 与我正在引用的实体之一中存在的 Guid 进行比较,则 SQL 永远不会运行!我已经使用运行 SQL Profiler 的 SQL Server 2008 R2 对此进行了测试,并且在执行该语句时,该 sql 显然从未对数据库进行过处理。如果我取出 Guid 比较,则将 sql 传递给 SQL Server 并返回结果。
例如:
var itemType = new Guid("27733204-C1E6-4F93-BEAD-63C2C8EBC299");
var items from myDBContext.Items.Where(x => x.itemType == itemType);
我尝试了其他方法,例如 x.itemType.CompareTo(itemType) 但没有任何效果。基本上,如果我有一个 Guid,我想在 linq 语句本身范围之外的任何类型的 Where 子句中使用,我绝对不会向服务器发出 SQL。
我希望有人能给出一些答案。当前使用 Entity Framework 5 和 C# 4.5。