当前位置: 首页 > news >正文

C# 单元测试EntityFramework中的DbFunctions中的函数

C# 单元测试中mock EntityFramework中的DbFunctions中的函数




1. 写一个挡板类来提供C#代码的实现
public static class DbFunctionUnitTestable
    {
        /// <summary>
        /// This is for Unit Test.
        /// When Running against DB ,EF will generate the SQL and ignore the implemenation
        /// in this method . when calling from C#(Unit test) , will exeucte the logic below
        /// </summary>
        /// <param name="dt"></param>
        /// <returns></returns>
        [System.Data.Entity.DbFunction("Edm", "TruncateTime")]
        public static DateTime? TruncateTime(DateTime? dt)
        {
            if (dt.HasValue)
            {
                return dt.Value.Date;
            }


            return null;
        }
    }



2. 在运行时,如果是LINQ to ENTITY,EF会忽略c#的实现而选择[DbFunction()]的定义,对于本例,SQL PROFILER抓到的sql如下:


exec sp_executesql N'SELECT 
   ...
    FROM [dbo].[TKT_Ticket_Usage] AS [Extent1]
    WHERE ([Extent1].[TicketCode] = @p__linq__0) AND (((convert (datetime2, convert(varchar(255), [Extent1].[UsageDate], 102) ,  102)) = (convert (datetime2, convert(varchar(255), @p__linq__1, 102) ,  102))) OR ((convert (datetime2, convert(varchar(255), [Extent1].[UsageDate], 102) ,  102) IS NULL) AND (convert (datetime2, convert(varchar(255), @p__linq__1, 102) ,  102) IS NULL)))',N'@p__linq__0 nvarchar(4000),@p__linq__1 datetime2(7)',@p__linq__0=N'72016122817373389038',@p__linq__1='2017-02-08 00:00:00'



相关文章:

  • 菩提本无树,明镜亦非台,本来无一物,何处惹尘埃
  • 【译】微软 azure -- 机器学习算法选择的步骤
  • ERROR: ORA-01034: ORACLE not available ERROR:ORA-01034ORA-27101的解决方法
  • Android Studio 编译错误DuplicateFileException
  • 如何获取SQL Server数据库里表的占用容
  • 关于面向对象中的代码审查(Code Review)
  • 数据挖掘常用的心脏病数据(From UCI)
  • LeetCode -- Count of Smaller Numbers After Self
  • LeetCode -- Valid Perfect Square
  • LeetCode -- Russian Doll Envelopes
  • 查看sql server数据库的空间大小...
  • LeetCode -- Longest Palindrome
  • 有朋远方来-致力于java培训的张孝祥
  • LeetCode -- Range Sum Query 2D - Immutable
  • 从Oracle到DB2,问题集(一)
  • JavaScript-如何实现克隆(clone)函数
  • [译]CSS 居中(Center)方法大合集
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • CSS实用技巧干货
  • Shadow DOM 内部构造及如何构建独立组件
  • SpingCloudBus整合RabbitMQ
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 基于HAProxy的高性能缓存服务器nuster
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 如何优雅地使用 Sublime Text
  • 云大使推广中的常见热门问题
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (vue)页面文件上传获取:action地址
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (未解决)macOS matplotlib 中文是方框
  • (学习日记)2024.01.19
  • .bashrc在哪里,alias妙用
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET基础篇——反射的奥妙
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET学习教程二——.net基础定义+VS常用设置
  • @Bean, @Component, @Configuration简析
  • [ IO.File ] FileSystemWatcher
  • [120_移动开发Android]008_android开发之Pull操作xml文件
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [C/C++]数据结构 栈和队列()
  • [C++随笔录] 红黑树
  • [COI2007] Sabor
  • [C语言][C++][时间复杂度详解分析]二分查找——杨氏矩阵查找数字详解!!!
  • [ffmpeg] 定制滤波器
  • [Git 1]基本操作与协同开发
  • [javaee基础] 常见的javaweb笔试选择题含答案
  • [JavaEE系列] Thread类的基本用法
  • [LeetCode] 626. 换座位
  • [LeetCode周赛复盘] 第 310 场周赛20220911
  • [Linux] Apache的配置与运用