当数据类型不匹配时,实体框架JOIN

时间:2014-07-21 18:50:07

标签: c# sql-server linq entity-framework

在迁移旧的SQL查询时,我发现连接条件中使用的列具有不同的数据类型int& BIGINT。我不确定SQL Server中是如何支持的那样!

然而,当使用EF的Model-First风格时,这些列映射到int&分别长。 在LINQ中,我无法再编写连接条件,我也无法使用Convert.ToInt32,因为EF在运行时无法识别这些方法。

所以我被锁定了。我该如何处理?

1 个答案:

答案 0 :(得分:2)

int to long

您无需使用Convert.ToInt32。你可以加入列,int和bigint之间应该没有任何问题。


长串

您可以在联接中使用SqlFunctions.ConvertString,如下所示:

var query = from x in context.Table1
            join y in context.Table2
            on x.StringColumn equals SqlFunctions.StringConvert((decimal)y.LongColumn).Trim()
            select ...