为了账号安全,请及时绑定邮箱和手机立即绑定

使用Linq2Sql出现无法将Guid转换成Sql的错误.

使用Linq2Sql出现无法将Guid转换成Sql的错误.

忽然笑 2018-09-14 08:05:04
错误信息如下:Bugu.UnitTest.EventRepositoryTest.TestEventRepository:System.NotSupportedException : 成员“Bugu.Infrastructure.DomainBase.IEntity`1[System.Guid].Key”不支持转换为 SQL。以下是我出错的代码.TEntity和Key是泛型类型1 public virtual TEntity GetByKey(Key key) 2         { 3             var item = entityTable.Single(i => i.Key.Equals(key)); 4              5             if (item == null) 6                 return null; 7             var entity = entityFactory.Build(item); 8             entityBuilderAssistances(entity, item); 9 10             return entity;11         }连这个纠结的方法都用了,也不行...item = entityTable.Single(i => new Guid(i.Key.ToString()) == new Guid(key.ToString()));
查看完整描述

1 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

LINQ2SQL,和LINQ2OBJ不一样,使用的是Expression<>,entityTable.Single(i =>i.Key.Equals(key))当中的Single里面的会狗造成表达式树,这是编译器自动做的,但是运行时这个表达式树会 交给LINQ2SQL的Provider,Provider负责将表达式树使用SQL表示。所以你这里的i.Key调用的是MemberExpression(),但是Provider不知道如何转换你的Key到SQL,于是报错。

我想不到什么好的解决办法,或许(好像不是好办法)可以Key=>string做成存储过程proc,entityTable.Single(i =>proc(i).EqualskeyString)


查看完整回答
反对 回复 2018-09-19
  • 1 回答
  • 0 关注
  • 655 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信