首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

.NET Core系列 :4 测试

从网站或者官网上,你可以找到不少xUnit的优点,与NUnit和其他测试框架相比有一下一些优势           1)为每个测试方法产生一个对象实例          2)取消了[SetUp]和[TearDown...使用xUnit.net 单元测试 首先我们类似于.NET Core系列 :3 、使用多个项目 创建一个解决方案testdemo,添加一个类库项目叫做DotnetCoreLib,Library.cs 也替换为...还有我们设置Framework节点为 netcoreapp1.0, 依赖的xunit 和xunit.runner的包 "dependencies": {     "dotnet-test-xunit":...这时我们通常需要有一个单元测试模拟类库,一直以来,开发者对 mocking 类库的语法的简洁性有强烈的需求,NSubstitute 试图满足这一需求。...通过在一个工程里同时模拟了服务端(TestServer)和客户端(HttpClient)的通信,从而达到了整体测试WebApi接口的目的,相关的代码放在https://github.com/ardalis

3.2K100

efcore使用ShardingCore实现分表分库下的多租户

,原因是因为我们需要在不同的租户下实现不同的数据库的配置,比如租户A和我们签订的协议里面有说明系统使用开源数据库,或者希望使用Linux平台那么可以针对租户A进行配置MySql或者PgSql,租户B是资深软粉说需要使用...公共用户存储 首先在我还没有创建租户的时候是不存在数据库的所以我的数据自然而然不会存在当前租户下,这边我们采用的是存储到其他数据库中,假设我们使用一个公共的数据库作为用户系统....到此为止我们的用户系统就已经完成了是不是十分的简单仅仅几段代码,用户这边注册完成后将会创建对应的数据库和对应的表,如果你是分表的那么将会自动创建对应的数据库表等信息。...dbcontext使用的是哪个配置 public class TenantSelectMiddleware { private readonly RequestDelegate...MSSQL,这边成就帮我们自动生成好了对应的数据库表结构 接下来我么再注册一个TenantB用户选择MySql 通过截图我们可以看到ShardingCore也是为我们创建好了对应的数据库和对应的表信息

1.6K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    美观且功能丰富的控制台:5个.Net开源项目

    4、文件格式:支持将文档导出为多种流行的文件格式,例如pdf、位图和dxf。这使得用户可以轻松地将图表导出为所需的文件格式,以满足不同的需求和应用场景。...5、C#脚本:支持使用C#脚本自动执行绘图和处理。这使得用户可以使用脚本来实现更复杂的数据处理和图形生成,进一步扩展了Core2D的功能和应用范围。...5、一个简单易用、灵活多变的.NET单元测试模拟框架 NSubstitute是一个开源的.NET单元测试模拟类库,该框架设计的主要目标是提供一个简单明了、易用性强、贴近自然语言的模拟测试框架。...NSubstitute为Arrange-Act-Assert(AAA)模式的测试进行设计,使得开发者只需关注如何进行测试,而无需考虑是否需要编写模拟或存根。...此外,NSubstitute不仅提供了最常用的操作需求,还支持一些不常用的或探索性的功能。它尽可能地将语法向自然语言靠近,以模拟概念为中心,帮助开发者更好地完成单元测试。

    32430

    .NET单元测试的艺术-2.核心技术

    开篇:上一篇我们学习基本的单元测试基础知识和入门实例。但是,如果我们要测试的方法依赖于一个外部资源,如文件系统、数据库、Web服务或者其他难以控制的东西,那又该如何编写测试呢?...下图展示了存根和模拟对象之间的区别,可以看到测试会使用模拟对象验证测试是否失败。 ?...然后创建实现接口的模拟对象,它看起来十分像存根,但是它还存储了一些状态信息,然后测试可以对这些信息进行断言,验证模拟对象是否正确调用。...3.3 使用NSubstitute模拟对象   NSub是一个受限框架,它最适合为接口创建伪对象。...3.4 使用NSubstitute模拟值   如果接口的方法返回不为空,如何从实现接口的动态伪对象返回一个值呢?

    1.7K20

    .NET Core开发实战(第28课:工作单元模式(UnitOfWork):管理好你的事务)--学习笔记

    28 | 工作单元模式(UnitOfWork):管理好你的事务 工作单元模式有如下几个特性: 1、使用同一上下文 2、跟踪实体的状态 3、保障事务一致性 我们对实体的操作,最终的状态都是应该如实保存到我们的存储中...是 EF 的基类,然后实现了 UnitOfWork 的接口和事务的接口 /// public class EFContext : DbContext, IUnitOfWork,...= null;// 事务是否开启是判断当前这个事务是否为空 /// /// 开启事务 /// /// <returns...= null) { // 最终需要把当前事务进行释放,并且置为空 // 这样就可以多次的开启事务和提交事务..., ILogger logger) { _dbContext = dbContext ??

    3.4K20

    Entity Framework 4.1 Code-First 学习笔记

    例如,对于 Order 来说,他的属性 OrderID 必须是主键,其它的约定将用来推断列名和列的类型,默认数据库中的列名是属性名,使用 string 类型来影射数据库中的 nvarchar(128),...如果属性的类型是可空的,那么,影射到数据库中的允许 NULL 等等。...32,最小长度为2,尽管我们如此规定,但最小长度是不会被映射到数据表中的,这一点可以理解,最小长度会在数据存储时进行验证,如果小于2将会抛出异常,无法完成保存。   ...即使复杂类型的所有属性都是可空的,你也不能将整个复杂类型的对象设为 null, 例如,在这种情况下,即使街道的名称和街道的号码不是必填的,也不能有一个住宅的地址为 null,需要创建一个所有属性都是 null...为了模拟实际的业务需求,我定义了一个简单的继承层次,一个抽象基类和两个派生类,代码如下: publicabstractclass PersonBase { publicint PersonID {

    1.6K10

    EF简介

    ORM: 广义上:ORM指的是面向对象的模型和关系型数据库的数据库之间的相互转换; 狭义上:ORM可以被认为是,基于关系型数据库的数据存储,实现一个虚拟的面向对象的数据接口。 ?...,不管你添加什么样的数据库实体,都会自动继承Dbcontext这个类,所以Dbcontext:这个类就是实现关系型数据库和面线对象交互的通用数据接口。...二、使用ef进行数据库的增删改差: ef实现增删改差的流程:(1)通过把实体的变化,转换成数据处理类(语句) (2)通过调用ADO.NET将处理类(语句)转换成sql语句(3)将sql语句插入到数据库中执行并返回结果...1、当使用上下文操作数据库表时,被操作表必须含有主键,否则回报错。...错误的原因我们来分析下: 经过调试代码我们发现,当我们第一次new T_ConsultingList对象时,这个对象为空,当我们使用ef添加完数据后,再去观察这个对象我们会发现,这个对象里面已经有值了,

    1.4K80

    使用开源框架Sqlsugar结合mysql开发一个小demo

    (3.x版本已经支持了4种数据库,相对稳定功能简单) 3.语法简单 完美的语法,可以秒杀现有所有ORM框架 详细语法请看孙凯旋博客园 http://www.codeisbug.com/Doc/8 二、主要介绍的是如何使用结合...mysql数据库使用Sqlsugar 1.新建解决方案,自定义解决方案名称和保存路径 2.此时我们需要添加三个包,首先找到工具 =》NuGet包管理器 =>管理解决方案的NuGet程序包 ?...4.准备工作已经做完了,现在可以开始正文了 先贴一段代码,这个是我封装的一个操作数据库的一个类,我采用的是单例模式,不过有个弊端就是不能使用高并发的情况 public class DBContextDBContext() {  //通过这个可以直接连接数据库 Db = new SqlSugarClient(new ConnectionConfig()...model类,比如我这里是book和booktype,附加一段代码做个参考 [SugarTable("Books")]//指定数据库中的表名,要对应数据库的表名,否则会出错 public

    2.7K10

    数据访问模式之Repository模式

    在《企业架构模式》中,译者将Repository翻译为资源库。给出如下说明:通过用来访问领域对象的一个类似集合的接口,在领域与数据映射层之间进行协调。...下面我们就用EF来实现一个简单的Repository模式  1、我们对实体的公共操作部分,提取为IRepository接口,比如常见的增加,删除、修改等方法。...System.Data.Entity.ModelConfiguration.Conventions; namespace Repository.Data { public class DemoDbContext : DbContext...(成绩)类,Members与Scores为一对多的关系。...一般Repository都会跟Unit of Work模式联合使用,如果你有好的学习资料欢迎分享,Unit of Work模式曾看了一天也没有理解其精髓。 每天学习一点点,每天进步一点点。

    1.4K52

    .NET Core微服务之开源项目CAP的初步使用

    CAP 目前支持使用 Sql Server,MySql,PostgreSql 数据库的项目;   CAP 同时支持使用 EntityFrameworkCore 和 Dapper 的项目,可以根据需要选择不同的配置方式...它会在这个数据库中创建本地消息表Published和Received)以及使用到的消息队列(这里是RabbitMQ) public void ConfigureServices(IServiceCollection...),其中EF方式中不需要传transaction(当CAP检测到 Publish 是在EF事务区域内的时候,将使用当前的事务上下文进行消息的存储),而基于ADO.NET方式中需要传transaction...Cap.Received:这个表主要是用来存储 CAP 接收到 MQ(Message Queue) 的客户端订阅的消息,也就是使用 CapSubscribe[] 订阅的那些消息。...清理规则为 ExpiresAt (字段名)不为空并且小于当前时间的数据。

    1.7K10

    Entity Framework复杂类型属性映射

    注意: 复杂类型检测要求该类型不具有引用实体类型的属性,还要求不可引用另一类型的集合属性 复杂类型的在数据库中映射的列名称为:负载类型类名_属性名 我们接下来创建 DbContext 类 public...()); } public DbSet Users { get; set; } } 创建完DbContext类后,我们编写将数据存入数据库的方法:...为避免添加实体报错,应该在实体的构造函数中初始化复杂类型; 将制度属性添加到复杂类型中时,需进行空值检查; 尽量显式注册复杂类型。...所谓原始值就是从数据库查询出来的值,当前值就是实体目前的值。入口点是 DbContext的Entry方法,返回对象类型是 DbEntityEntry 。...:即使查询出的数据为空,EF Code First 依然会初始化复杂类型对象; 无法延迟加载。

    69510

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 介绍)--学习笔记

    集中数据库访问逻辑 24.jpg UnitOfWork 工作单元 一个工作单元在一个事务范围内保留所有对数据库的变更,在这个工作单元结束的时候一次性提交所有改动到数据库 DB Context 与...DB Set DB Context(UnitOfWork 工作单元) DB Set(Repository 仓储) EF Core 提供一个 DB Context 和多个 DB Set 组合完成数据查询和更新操作的...ORM 框架 EF Core快速开始示例 创建一个空的 web api 项目 添加 Pomelo.EntityFrameworkCore.Mysql 的 nuget 包引用 创建实体 创建 DbContext...配置连接字符串并且注入 DbContext 使用 DbContext 完成数据查询与插入 创建实体 Entity namespace LighterApi.Data { public class...DbContext 完成数据查询与插入 初始化数据库 ,注意在初始化以前确保正确配置了连接字符串,并且在startup.cs中添加了DbContext的注入 // 安装dotnet tool ef工具

    95511

    EF 约定介绍

    当前环境为EF Code First开发模式中 一、EF默认约定 1、常用约定 (1)、当没有显示指定实体主键的时候,EF会默认将长得最像Id的属性(且类型为GUID)设为主键 (2)、设计实体时,当一个实体包含一个集合属性...EF开发,往往是以定义一些模型类开始,定义完这些模型类之后,需要让DbContext知道哪些类型包含在当前模型中,因此,我们需要自定义一个ZdyNameDbContext,并继承DbContext,并在自定义...DbContext中暴露需要暴露的类型,这样在Code First开发模式中,就可以使用 context(数据库上下文),使用这些预先暴露的DbSet类型,具体的代码如下:   public class...关联实体的主键名 (3)、关联实体的主键名 注: (1)、当外键关系被检测到,Code First会根据外键的可空性来推断关系的具体形式;如果外键属性是可空的,那么关系会被设置为可选的,否则,关系就是必选的.... (2)、当关联实体的外键属性被设置为不为空,Code First会设置级联删除,反之不会。

    1.6K100

    EF基础知识小记三(设计器=>数据库)

    本文主要介绍通过EF的设计器来同步数据库和对应的实体类.并使用生成的实体上下文,来进行简单的增删查该操作 1、通过EF设计器创建一个简单模型 (1)、右键目标项目添加新建项 (2)、选择ADO.Net实体数据模型...,并将实体模型命名为Recipe1,点击下一步 (3)、选择空设计器,并点击完成 (4)、edmx空模型创建完毕,下一步右键设计界面创建实体 (5)、添加一个Person实体,实体属性如下图,并点击确定...更改数据库架构名称(Database Schema name)为Chapter2,更改实体容器名称(Entity Container Name)为EF6RecipesContext,如下图所示: (9)... (2)、通过DbContext进行简单的增删查该操作 (1)、DbContext上下文对象介绍 数据库上下文对象,对于数据库的操作,基本都看它,使用完它,注意释放!!!!!!...(2)、使用DbContext上下文对象进行简单的增删查该        using (var context = new EF6RecipesContext()) {

    1K50

    .NET EF Core(Entity Framework Core)

    EF Core不支持模型优先,推荐使用代码优先,遗留系统可以使用Scaffold-DbContext来生成代码实现类似DBFirst的效果,但是推荐用Code First 。...修改表结构 想要限制Title的最大长度为50,Title字段设置为“不可为空”,并且想增加一个不可为空且最大长度为20的AuthorName(作者名字)属性。...1、把被并发修改的属性使用IsConcurrencyToken()设置为并发令牌。...byte[]类型的属性做并发令牌属性,然后使用IsRowVersion()把这个属性设置为RowVersion类型,这样这个属性对应的数据库列就会被设置为ROWVERSION类型。...总结:如果有一个确定的字段要被进行并发控制,那么使用IsConcurrencyToken()把这个字段设置为并发令牌即可;如果无法确定一个唯一的并发令牌列,那么就可以引入一个额外的属性设置为并发令牌,并且在每次更新数据的时候

    46512

    .NET 云原生架构师训练营(模块二 基础巩固 EF Core 介绍)--学习笔记

    语言的抽象 多出来的对事务、连接池、迁移、种子数据等一些功能 多数情况下 ORM 生成的 SQL 脚本比你自己写的要好 Repository 仓储 在领域层和数据映射层之间,像一个内存级别的领域对象集合 为领域业务的单元测试提供替换点...集中数据库访问逻辑 ?...工作单元) DB Set(Repository 仓储) EF Core 提供一个 DB Context 和多个 DB Set 组合完成数据查询和更新操作的 ORM 框架 EF Core快速开始示例 创建一个空的...web api 项目 添加 Pomelo.EntityFrameworkCore.Mysql 的 nuget 包引用 创建实体 创建 DbContext 配置连接字符串并且注入 DbContext 使用...DbContext 完成数据查询与插入 初始化数据库 ,注意在初始化以前确保正确配置了连接字符串,并且在startup.cs中添加了DbContext的注入 // 安装dotnet tool ef工具

    82310

    EntityFramework Core 学习扫盲

    添加实体和映射数据库 使用EF CORE中添加实体,约束属性和关系,最后将其映射到数据库中的方式有两种,一种是Data Annotations,另一种是Fluent Api,这两种方式并没有优劣之分,全凭开发者喜好和需求...包含和排除实体类型 将实体在Context中映射到数据库有多种方式: 使用DbSet定义属性。 在OnModelCreating方法中使用Fluent Api配置。...当开发者需要进行自定义修改名称时( 比如每种关系型数据库的命名规则不一样,虽然笔者一直喜欢使用帕斯卡命名以保持和项目代码结构中的统一),可以使用以下的方式。...备用键 备用键在之前的小节中已经提过,使用以下代码配置的列将自动设置为唯一标识列。...以下内容用代码的方式给出了一对一,一对多和多对多的关系,两边关系设为不可空。其实可空不可空的控制十分简单,只要注意是否需要加上IsRequired的扩展Api即可。

    9.6K90
    领券