Dio*_*Dio 3 c# entity-framework
我正在尝试将GUID作为字符串传递给Web服务,但是我已经遇到了障碍.GUID作为a存储在SQL Server中UNIQUEIDENTIFIER,EF将其作为GUID提取.我想要做的是在我的查询中这样做:
var query = myEntities.Foo.Where(q => q.Id== Id)
.Select(bar =>
new Bar()
{ BString = bar.GUID }
);
Run Code Online (Sandbox Code Playgroud)
现在,C#抛出,你不能转换生成错误System.Guid来string,所以我认为你可以这样做:
{ BString = bar.GUID.ToString() }
Run Code Online (Sandbox Code Playgroud)
甚至
{ BString = Convert.ToString(bar.GUID) }
Run Code Online (Sandbox Code Playgroud)
但两者都以运行时异常结束:
有一个异常,它是System.NotSupportedException:LINQ to Entities无法识别方法'System.String ToString(System.Object)'方法,并且此方法无法转换为商店表达式.
所以我推测,在这两种情况下,它不能够找出一个T-SQL相当于从去UniqueIdentifier到varchar.
除了检索对象之外,有没有办法解决这个问题,然后迭代我的返回集将每个对象复制到一个新对象并在那时转换guid-> string?
谢谢.
将其转换为LINQ语句的查询部分之外的字符串.
var query = myEntities.Foo.Where(q => q.Id== Id).Select(r => r.GUID)
.AsEnumerable()
.Select(guid =>
new Bar()
{ BString = guid.ToString() }
);
Run Code Online (Sandbox Code Playgroud)
它.AsEnumerable()是重要的部分:它将结果转换IQueryable为IEnumerable,在数据库查询完成后具有在客户端上运行任何进一步操作的效果.(您也可以使用.ToArray()或.ToList()代替它.)
| 归档时间: |
|
| 查看次数: |
9006 次 |
| 最近记录: |