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

在EF 4.0中将字符串转换为Int

在EF 4.0中将字符串转换为Int

郎朗坤 2019-11-04 09:51:58
有没有办法做到这一点?我在数据库中有一个字符串字段,我想将其解析为我的LINQ查询中的int属性(是的,它必须处于IQueryable级别,而不是位于内存中)。我知道2年前EF 1.0不能做到这一点(即使LINQ to SQL开箱即用也支持此基本功能)...但是我只是想知道现在是否有人想出办法?自定义功能映射?特殊语法?什么都没有...更新:我尝试了模型定义的函数,如下所示:    <Function Name="ConvertToInt32" ReturnType="Edm.Int32">      <Parameter Name="v" Type="Edm.String" />      <DefiningExpression>        CAST(v AS INT)      </DefiningExpression>    </Function>    [EdmFunction("Model.Repository", "ConvertToInt32")]    public static int ConvertToInt32(string value)    {        throw new InvalidOperationException("Only valid when used as part of a LINQ query.");    }但它似乎不起作用。我得到运行时异常: ErrorDescription=Type 'INT' could not be found. Make sure that the required schemas are loaded and that the namespaces are imported correctly.        StackTrace:             at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertTypeName(Node typeName, SemanticResolver sr)             at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertTypeExprArgs(BuiltInExpr astBuiltInExpr, SemanticResolver sr)             at System.Data.Common.EntitySql.SemanticAnalyzer.<CreateBuiltInExprConverter>b__73(BuiltInExpr bltInExpr, SemanticResolver sr)             at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertBuiltIn(Node astExpr, SemanticResolver sr)             at System.Data.Common.EntitySql.SemanticAnalyzer.Convert(Node astExpr, SemanticResolver sr)             at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertValueExpression(Node astExpr, SemanticResolver sr)             at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertQueryStatementToDbExpression(Statement astStatement, SemanticResolver sr)             at System.Data.Common.EntitySql.SemanticAnalyzer.AnalyzeQueryCommand(Node astExpr)
查看完整描述

2 回答

?
MMMHUHU

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

关于在运行时将其添加到元数据工作空间的问题非常好,但是我不知道答案。无论如何,您将无法将其映射到,Convert.ToInt32因为您无法EdmFunction向该方法添加属性。

查看完整回答
反对 回复 2019-11-04
  • 2 回答
  • 0 关注
  • 608 浏览
慕课专栏
更多

添加回答

举报

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