漂亮的门户网站,seo综合查询中的具体内容有哪些,北京梵客装饰,工商注册流程和需要的资料前言#xff1a;.NET Core 是.NET Framework的新一代版本#xff0c;是微软开发的第一个跨平台 (Windows、Mac OSX、Linux) 的应用程序开发框架#xff08;Application Framework#xff09;#xff0c;未来也将会支持 FreeBSD 与 Alpine 平台。.Net Core也是微软在一开始… 前言.NET Core 是.NET Framework的新一代版本是微软开发的第一个跨平台 (Windows、Mac OSX、Linux) 的应用程序开发框架Application Framework未来也将会支持 FreeBSD 与 Alpine 平台。.Net Core也是微软在一开始发展时就开源的软件平台其开发目标是跨平台的 .NET 平台。.NET Core 平台的开发优势 支持或可以移转 (port) 到更多的操作系统平台与芯片架构 (也就是未来项目会跨出 x86 平台)。具有引人注目的性能与高可靠度。开发人员能快速与直觉的获取 .NET Core 开发环境。在直觉与具生产力的情况下建造应用程序使用文件示例与 NuGet 组件。以上文字引用来源https://zh.wikipedia.org/wiki/.NET_Core1. .NET Core 2.0 迁移指南 由于.NET Core跨平台开发和性能方面的优势再加上.NET Core2.0版本的推出越来越多的客户逐渐迁移到.NET Core框架进行软件系统的开发。Slickflow引擎组件的.NET Core版本的推出也是为了解决跨平台引擎产品的实现。本文大致描述了创建.NET Core2.0 为目标版本类库数据访问项目和Asp.NET Mvc Core等类型项目的搭建过程方便用户快速上手。1.1 数据访问项目1) IRepository模式实现 Repository模式实现通用数据访问接口其好处是首先定义出标准的增删改查接口其次可以满足对接后端不同的数据处理框架如DapperEF和NHibernate等框架。/// summary/// 数据操作类接口/// /summary/// typeparam nameT数据实体类型/typeparampublic interface IRepositoryT where T : class{DbSetT GetDbSet();T GetByID(dynamic id);T Get(ExpressionFuncT, bool predicate);IQueryableT GetAll();IQueryableT Query(string sql, params object[] parameters);IEnumerableT Query(ExpressionFuncT, bool predicate);int Count(ExpressionFuncT, bool predicate null);//insert, update, deleteT Insert(T entity);void Insert(params T[] entities);void Insert(IEnumerableT entities);void Update(T entity);void Update(params T[] entities);void Update(IEnumerableT entities);void Delete(dynamic id);void Delete(params T[] entities);void Delete(IEnumerableT entities);}2) UnitOfWork 解决事务 引擎内部逻辑处理通常是多表的插入编辑操作为保持数据事务完整性需要实现会话事务的参数传递提供提交和回滚的处理方式。Slickflow.Data.IDbSession用来实现UnitOfWork模式。/// summary/// 数据会话接口/// /summarypublic interface IDbSession : IDisposable{DbContext DbContext { get; }IRepositoryT GetRepositoryT() where T : class;int SaveChanges();int ExecuteSqlCommand(string sql, params object[] paramters);}代码示例Session作为参数传入具体接口方法最终实现事务的一致提交或回滚。/// summary/// 运行流程测试/// /summary/// param namerunner运行者/param/// returns执行结果/returns[HttpPost]public ResponseResult RunProcessApp([FromBody] WfAppRunner runner){using (var session DbFactory.CreateSession()){var transaction session.DbContext.Database.BeginTransaction();var wfService new WorkflowService();var result wfService.RunProcessApp(runner, session);if (result.Status WfExecutedStatus.Success){transaction.Commit();return ResponseResult.Success();}else{transaction.Rollback();return ResponseResult.Error(result.Message);}}}1.2 Asp.NET Mvc Core项目1) Mvc和WebAPI路由统一配置 通常在.NET项目开发中Mvc项目用于前端页面展现WebAPI用于后端接口实现。在项目实践过程中可以将两个项目整合为一便于环境配置。app.UseMvc(route {route.MapRoute(name: default,template: {controllerHome}/{actionIndex}/{id?});route.MapRoute(name:defaultApi,template: api/{controller}/{action}/{id?});});2) 数据库连接串配置 数据库链接串在appsettings.json文件中进行定义读取方法如下var dbType ConfigurationExtensions.GetConnectionString(Configuration, WfDBConnectionType);var sqlConnectionString ConfigurationExtensions.GetConnectionString(Configuration, WfDBConnectionString);Slickflow.Data.ConnectionString.DbType dbType;Slickflow.Data.ConnectionString.Value sqlConnectionString;3) DbContext 数据库类型匹配 由于不同类型数据库的数据访问组件不同所以特意做了接口对应匹配传入数据库连接串值。protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder){if (ConnectionString.DbType DatabaseTypeEnum.SQLSERVER.ToString())optionsBuilder.UseSqlServer(ConnectionString.Value);else if (ConnectionString.DbType DatabaseTypeEnum.MYSQL.ToString())optionsBuilder.UseMySql(ConnectionString.Value);else if (ConnectionString.DbType DatabaseTypeEnum.ORACLE.ToString())optionsBuilder.UseOracle(ConnectionString.Value);}2. EF Core对多数据库生成的支持 EF Code First是由实体来生成数据库模型简要过程描述为首先定义好实体对象对应数据库字段类型然后执行EF Migrations的操作命令来生成数据库对象。其中经常用到的命令有 1) dotnet ef migrations add MyFirstMigraton 2) dotnet ef migrations update database 下面就以WfProcess表的创建来说明大致的创建过程。2.1 MS SQLSERVER数据库 采用的数据访问组件默认为Microsoft.EntityFrameworkCore。 1) 实体属性标识/// summary/// 流程实体类/// /summary[Table(WfProcess)]public class ProcessEntity{[Key][DatabaseGenerated(DatabaseGeneratedOption.Identity)][Column(Order 0)]public int ID { get; set; }[Required][Column(TypeName varchar(100), Order 1)][MaxLength(100)]public string ProcessGUID { get; set; }[Required][Column(TypeName nvarchar(50), Order 2)][MaxLength(50)]public string ProcessName { get; set; }[Required][Column(TypeName nvarchar(20), Order 3)][MaxLength(20)]public string Version { get; set; }} 2) 默认值赋值//流程创建modelBuilder.EntityProcessEntity(entity {entity.Property(e e.Version).HasDefaultValue(1);entity.Property(e e.IsUsing).HasDefaultValue(0);entity.Property(e e.StartType).HasDefaultValue(0);entity.Property(e e.EndType).HasDefaultValue(0);entity.Property(e e.CreatedDateTime).HasDefaultValueSql(getdate());}); 3) 生成命令执行dotnet ef migrations add MyFirstMigration2.2 MySQL数据库 采用的数据访问组件默认为Polemo.EntityFrameworkCore.MySQL。 1) 实体属性标识/// summary/// 流程实体类/// /summary[Table(WfProcess)]public class ProcessEntity{[Key][DatabaseGenerated(DatabaseGeneratedOption.Identity)][Column(Order 0)]public int ID { get; set; }[Required][Column(TypeName varchar(100), Order 1)][MaxLength(100)]public string ProcessGUID { get; set; }[Required][Column(TypeName varchar(50), Order 2)][MaxLength(50)]public string ProcessName { get; set; }[Required][Column(TypeName varchar(20), Order 3)][MaxLength(20)]public string Version { get; set; }} 2) 默认值赋值 //流程创建modelBuilder.EntityProcessEntity(entity {entity.Property(e e.Version).HasDefaultValue(1);entity.Property(e e.IsUsing).HasDefaultValue(0);entity.Property(e e.StartType).HasDefaultValue(0);entity.Property(e e.EndType).HasDefaultValue(0);}); 3) 生成命令执行dotnet ef migrations add MyFirstMigration3. Slickflow.WebAPI 快速测试 3.1 路由模式选定 仍然选定传统路由模式便于接口快速识别和匹配。app.UseMvc(route {route.MapRoute(name: defaultApi,template: api/{controller}/{action}/{id?});});3.2 数据库链接串读取var dbType ConfigurationExtensions.GetConnectionString(Configuration, WfDBConnectionType);var sqlConnectionString ConfigurationExtensions.GetConnectionString(Configuration, WfDBConnectionString);Slickflow.Data.ConnectionString.DbType dbType;Slickflow.Data.ConnectionString.Value sqlConnectionString;3.3 测试接口方法/// summary/// 启动流程测试/// /summary/// param namerunner运行者/param/// returns执行结果/returns[HttpPost]public ResponseResult StartProcess([FromBody] WfAppRunner runner){using (var session DbFactory.CreateSession()){var transaction session.DbContext.Database.BeginTransaction();var wfService new WorkflowService();var result wfService.StartProcess(runner, session);if (result.Status WfExecutedStatus.Success){transaction.Commit();return ResponseResult.Success();}else{transaction.Rollback();return ResponseResult.Error(result.Message);}}}3.4 RestClient 测试工具 引擎接口测试采用RestClient工具比较方便快捷。通常采用统一的接口方法将不同类型的流程JSON数据格式作为测试用例来提交测试。4. 总结 Slickflow 引擎产品的.NET Core版本实现用于跨平台应用的项目开发和业务集成。而且在数据库的支持上采用EF Core的Code First数据库迁移创建方便用户开发环境的快速搭建和配置。原文地址http://www.cnblogs.com/slickflow/p/8250317.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com