Entity framework 使用Informix的Linq到实体框架生成无用的强制转换

Entity framework 使用Informix的Linq到实体框架生成无用的强制转换,entity-framework,linq-to-entities,informix,Entity Framework,Linq To Entities,Informix,我有以下Linq查询: var asnPacApoRepository=repoFactory.GetRepository 但这似乎不会以任何方式影响生成的模型,也不会影响生成的查询 请注意,我在EF模型中使用了旧的ObjectContext,数据库类型是INFORMIX,我知道这可能没有帮助,但这看起来不像是.NET提供程序问题(INFORMIX/Db2),更像是实体框架的限制。启用Unicode后,字符串被映射为NVARCHAR,这样就可以进行强制转换。以下MSDN帖子中提到了一些解决方法:

我有以下Linq查询:

var asnPacApoRepository=repoFactory.GetRepository

但这似乎不会以任何方式影响生成的模型,也不会影响生成的查询


请注意,我在EF模型中使用了旧的
ObjectContext
,数据库类型是
INFORMIX

,我知道这可能没有帮助,但这看起来不像是.NET提供程序问题(INFORMIX/Db2),更像是实体框架的限制。启用Unicode后,字符串被映射为NVARCHAR,这样就可以进行强制转换。以下MSDN帖子中提到了一些解决方法:谢谢你的建议。我使用了第一种变通方法并编写了本机SQL查询。我对此不太满意,但由于linq生成的查询提供了超时,我觉得我现在没有任何其他选项。我知道这可能没有帮助,但这看起来不像是.NET提供程序问题(Informix/Db2),更像是实体框架的限制。启用Unicode后,字符串被映射为NVARCHAR,这样就可以进行强制转换。以下MSDN帖子中提到了一些解决方法:谢谢你的建议。我使用了第一种变通方法并编写了本机SQL查询。我对此不是很满意,但由于linq生成的查询提供了超时,我觉得我现在没有任何其他选择。
SELECT  *
FROM informix.asn_pac_apo AS Extent1
WHERE ((((CAST('06460518' AS nvarchar(8)) = Extent1.pzn) OR (CAST('10710808' AS nvarchar(8)) = Extent1.pzn)) OR ((CAST('00584142' AS nvarchar(8)) = Extent1.pzn) OR (CAST('03728156' AS nvarchar(8)) = Extent1.pzn))) AND (Extent1.gueltig_von <= '2016-04-24')) AND (('2016-04-24' <= Extent1.gueltig_bis) OR (Extent1.gueltig_bis IS NULL))
SELECT  *
FROM informix.asn_pac_apo AS Extent1
WHERE (Extent1.pzn IN ('06460518','10710808','00584142','03728156') AND (Extent1.gueltig_von <= '2016-04-24')) AND (('2016-04-24' <= Extent1.gueltig_bis) OR (Extent1.gueltig_bis IS NULL));