实体框架6 Oracle迁移替代System.Data.Entity.SqlServer.SqlFunctions

时间:2017-09-19 11:25:34

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

我们有应用程序应该在sql server和oracle上工作。我们在所有应用程序中都使用了Sql函数。现在我们正在迁移到oracle。 下面是我们使用的Sql函数。

SqlFunctions.StringConvert()
SqlFunctions.DateAdd()
SqlFunctions.Replicate()
SqlFunctions.DateDiff() 

现在我们需要替代以上与oracle一起使用的函数。 谷歌很多我发现的解决方案是 - 使用AsEnumerable()或ToList()获取内存中的记录然后进行转换,但这种方法不利于性能,因为我们在表中有大量记录。还有其他选择吗?

Linq查询前 -

var _IBTFile = from c in DataContext.DB0820205
               join s in DataContext.DB0820005 on c.ReconcileId equals s.PkId
               join a in DataContext.DB0820005 on c.ReconcileWithId equals a.PkId

               where s.status != upoaded && s.ReconciliationOnDate == EntryDate  && s.InstrumentNo != 0
               && c.ReconProcessType == ReconProcessType
               select new IBTFileUploadVm
               {
                   PkId = s.PkId,
                   InstrumentNo =System.Data.Entity.SqlServer.SqlFunctions.StringConvert( s.InstrumentNo),
                   LcyAmount = s.FcyAmount,
                   ReconDate = s.ReconciliationOnDate,
                   ReconType = 0,
                   DDDetailsVm = new DB0820002Vm
                   {
                       PkId = a.PkId,
                       PrintedDDNumberString =System.Data.Entity.SqlServer.SqlFunctions.StringConvert( s.InstrumentNo),
                       RemittanceAmount = a.FcyAmount,
                       BranchName = "",

                   },
                   PostDate = a.PostDate,
                   ValueDate = s.ReconciliationOnDate,
                   db0820205id = c.PkId,
               };
return _IBTFile;

1 个答案:

答案 0 :(得分:0)

System.Data.Entity.DbFunctions  this is the alternative for above functions except replicate() and StringConvert() function