Jon*_*ood 3 c# linq sql-server entity-framework
我有以下查询,它使用实体框架.
Analytic firstSent = (from a in Repository.Query<Analytic>()
where a.EntityType == "Proposal" &&
a.EntityId == Program.ActiveProposal.Id &&
a.Marker == AnalyticMarker.EmailProposalUrl.ToString()
orderby a.TimestampUtc
select a).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
在运行时,我收到以下错误:
LINQ to Entities无法识别方法'System.String ToString()'方法,并且此方法无法转换为存储表达式.
a.Marker是一个字符串列,AnalyticMarker.EmailProposalUrl是一个枚举值,我想将该列与该枚举的名称进行比较.
我知道SQL不支持从枚举到字符串的转换,但为什么它不会解析此字符串的值,然后将生成的字符串传递给SQL?这应该工作得很好.
试试这个:
var emailProposalUrl = AnalyticMarker.EmailProposalUrl.ToString();
Analytic firstSent = (from a in Repository.Query<Analytic>()
where a.EntityType == "Proposal" &&
a.EntityId == Program.ActiveProposal.Id &&
a.Marker == emailProposalUrl
orderby a.TimestampUtc
select a).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
另一个答案是解释为什么这也可以起作用的原因.
问题出现是因为
ToString()没有真正执行,它被转换为MethodGroup然后解析并转换为SQL.由于没有ToString()等价物,表达式失败.
| 归档时间: |
|
| 查看次数: |
6671 次 |
| 最近记录: |