业务场景:近期写的一个项目,整个项目采用的DDD(领域驱动)设计,所以刚开始设计的时候就将各个业务以聚合根的方式进行划分,以该业务场景为例,整体的业务简述为,当客户进行付款以后,创建一个付款单,然后由财务手动将付款单与发货单进行账务冲抵和关联,同时还需要针对付款的客户及企业的余额进行相应的变动,所以,当付款单和发货单进行冲抵业务的时候,客户及其企业的待付款金额将会根据冲抵的金额,进行变动,所以该业务的主要操作是首先针对发货单的待付款金额进行冲抵扣减,此时操作的聚合根为发货单的聚合根,而因为还需要同时针对用户的账户金额进行变动,所以在操作发货单的聚合根的时候,触发一个领域事件,而用户的聚合根订阅
业务场景:近期写的一个项目,整个项目采用的DDD(领域驱动)设计,所以刚开始设计的时候就将各个业务以聚合根的方式进行划分,以该业务场景为例,整体的业务简述为,当客户进行付款以后,创建一个付款单,然后由财务手动将付款单与发货单进行账务冲抵和关联,同时还需要针对付款的客户及企业的余额进行相应的变动,所以,当付款单和发货单进行冲抵业务的时候,客户及其企业的待付款金额将会根据冲抵的金额,进行变动,所以该业务的主要操作是首先针对发货单的待付款金额进行冲抵扣减,此时操作的聚合根为发货单的聚合根,而因为还需要同时针对用户的账户金额进行变动,所以在操作发货单的聚合根的时候,触发一个领域事件,而用户的聚合根订阅
为什么使用DbContext池?DbContext是EntityFramework中最重要的类型之一,它提供了一种连接数据库并执行查询和更新的方式。在一个ASP.NETCore应用程序中,每次请求都可能需要对数据库进行一次或多次查询。在这种情况下,为每个请求创建新的DbContext实例并不是一个好的选择,因为这样做可能会导致内存和性能问题。DbContext池允许应用程序在需要时重用已经创建的DbContext实例,从而提高性能并减少内存消耗。性能基准DbContext池的工作原理DbContext池是一个对象池,它维护一组可用的DbContext实例,这些实例是预先创建好的,缓存在池子中。
为什么使用DbContext池?DbContext是EntityFramework中最重要的类型之一,它提供了一种连接数据库并执行查询和更新的方式。在一个ASP.NETCore应用程序中,每次请求都可能需要对数据库进行一次或多次查询。在这种情况下,为每个请求创建新的DbContext实例并不是一个好的选择,因为这样做可能会导致内存和性能问题。DbContext池允许应用程序在需要时重用已经创建的DbContext实例,从而提高性能并减少内存消耗。性能基准DbContext池的工作原理DbContext池是一个对象池,它维护一组可用的DbContext实例,这些实例是预先创建好的,缓存在池子中。
本文将讲解提供者使用值生成器的原理。因代码太多,本文只摘要重要代码,并且删除了代码中的注释。SqlServer提供者:Microsoft.EntityFrameworkCore.SqlServer如下代码:我们可以看到提供者已经帮我们实现好了顺序Guid自定义值生成器。publicclassSequentialGuidValueGenerator:ValueGenerator{privatelong_counter=DateTime.UtcNow.Ticks;publicoverrideGuidNext(EntityEntryentry){varguidBytes=Guid.NewGuid()
本文将讲解提供者使用值生成器的原理。因代码太多,本文只摘要重要代码,并且删除了代码中的注释。SqlServer提供者:Microsoft.EntityFrameworkCore.SqlServer如下代码:我们可以看到提供者已经帮我们实现好了顺序Guid自定义值生成器。publicclassSequentialGuidValueGenerator:ValueGenerator{privatelong_counter=DateTime.UtcNow.Ticks;publicoverrideGuidNext(EntityEntryentry){varguidBytes=Guid.NewGuid()
EntityFramework7(EF7)中的继承映射允许您将类层次结构映射到数据库中的表层次结构。具体而言,这意味着您可以创建一个基类,然后从该基类派生多个子类,并将这些子类映射到不同的数据库表。这使得在数据库中存储不同类型的数据变得更加方便,同时还能保持面向对象编程的优雅性。EF7提供了三种类型的继承映射:单表继承(TablePerHierarchy,TPH)、分层表继承(TablePerType,TPT)和单独的表继承(TablePerConcreteClass,TPC)。下面分别介绍这三种映射类型。性能基准单表继承映射(TablePerHierarchy,TPH)单表继承映射将整个类层
EntityFramework7(EF7)中的继承映射允许您将类层次结构映射到数据库中的表层次结构。具体而言,这意味着您可以创建一个基类,然后从该基类派生多个子类,并将这些子类映射到不同的数据库表。这使得在数据库中存储不同类型的数据变得更加方便,同时还能保持面向对象编程的优雅性。EF7提供了三种类型的继承映射:单表继承(TablePerHierarchy,TPH)、分层表继承(TablePerType,TPT)和单独的表继承(TablePerConcreteClass,TPC)。下面分别介绍这三种映射类型。性能基准单表继承映射(TablePerHierarchy,TPH)单表继承映射将整个类层
在EF7中,生成的值是非常重要的,因为它们决定了数据库表中的数据。在本文中,我们将以人员为例,使用FluentAPI展示所有EF7生成值的功能。我们先来看一下人员表的属性:publicclassPerson{publicGuidId{get;set;}publicstringName{get;set;}publicintNameLength{get;set;}publicintAge{get;set;}publicDateTimeBirthday{get;set;}publicDateTimeCreationTime{get;set;}publicDateTimeLastUpdated{get
在EF7中,生成的值是非常重要的,因为它们决定了数据库表中的数据。在本文中,我们将以人员为例,使用FluentAPI展示所有EF7生成值的功能。我们先来看一下人员表的属性:publicclassPerson{publicGuidId{get;set;}publicstringName{get;set;}publicintNameLength{get;set;}publicintAge{get;set;}publicDateTimeBirthday{get;set;}publicDateTimeCreationTime{get;set;}publicDateTimeLastUpdated{get