首页 > 其他分享 >XAF EFCore 示例

XAF EFCore 示例

时间:2023-05-18 10:02:52浏览次数:52  
标签:XPO Database 项目 示例 Sample EFCore XAF

前言

在DEV官方建议创建新的XAF项目推荐选择EFCore时,我也第一时间创建了XAF的EFCore项目,这也是我第一次创建这个类型的项目,之前一直使用XPO,避免不了要对比一下。如果熟悉XPO但不了解EFCore的小伙伴来说,会有些迷茫,再加上通过向导创建的项目并不是开箱即用,还需要进行配置,可能会打击想了解EFCore的小伙伴,下面我会简单的讲解一下XAFEFCore项目创建及配置的过程。示例项目放到了gitee中,https://gitee.com/easyxaf/xaf_efcore_sample。

创建

创建的过程比较简单,与XPO版本的一样,甚至在22.5版本中,向导已默认选择了EFCore。项目结构也与XPO的保持一致,主要差别是在BusinessObjects文件夹中,同时多了一个XAF_EFCore_SampleDbContext类,这个是EFCore的DbContext,类似XPO的Session

运行

如果熟悉XPO的小伙伴会直接运行,直接运行也是可以的,但事后数据迁移会麻烦,下面我们用EFCore的方式来启动这个项目。

首先我们在主项目(XAF_EFCore_Sample.Blazor.Server)中添加Microsoft.EntityFrameworkCore.Tools包,这样我们就可以直接使用Add-Migration、Update-Database等迁移工具

你可以在程序包管理器控制台中输入Install-Package Microsoft.EntityFrameworkCore.Tools -Version 6.0.3,注意:版本是6.0.3,默认项目选择 XAF_EFCore_Sample.Blazor.Server,后面还会用到程序包管理器控制台

如果现在直接运行数据迁移它会报错,我们还需要配置一下,打开XAF_EFCore_SampleDbContext这个文件,找到XAF_EFCore_SampleDesignTimeDbContextFactory这个类

它上面已经有了说明,我们需要将异常及注释移除

现在我们就可以进行数据迁移了,打开程序包管理器控制台,输入Add-Migration Initialize_Database,默认项目选择 XAF_EFCore_Sample.Module,这样在XAF_EFCore_Sample.Module项目下会多出一个Migrations文件夹,打开20230518004940_Initialize_Database.cs这个文件,里面有数据迁移的代码,感兴趣的可以看一下。

Add-Migration命令是用于添加数据迁移代码文件,Initialize_Database是给这个迁移文件起的名字

下面我们需要更新数据库,在程序包管理器控制台中,输入Update-Database,这样就可以将我们之前的数据迁移执行到数据库中了,现在可以直接运行项目了,运行起来与XPO版本的没有什么区别。

如果我们要向ApplicationUser类中添加属性,我们需要重复前面的步骤,这个与XPO不同,XPO是自动迁移,而EFCore需要手动操作。我们下面向ApplicationUser类中添加Image属性,为用户添加一个图像

EFCore属性的写法与XPO也不一样,注意要加上virtual,这样XAF可以通过代理的方式来监听属性的变化,XAF文档中有一篇关于EFCore与XPO的比较 https://docs.devexpress.com/eXpressAppFramework/404186/why-we-recommend-ef-core-over-xpo

下面我们需要在程序包管理器控制台中,输入Add-Migration AddUserImage,执行完后,再次输入Update-Database,运行后的效果,注意默认项目为XAF_EFCore_Sample.Module

改造

下面我们改造一下,在XAF_EFCore_SampleDesignTimeDbContextFactory中,我们需要硬编码的方式指定数据库连接参数,这样我们在修改配置文件后,还要修改这个连接参数,下面我们直接用读取配置文件的方式来获取数据库连接参数

在XAF_EFCore_Sample.Module项目中添加包Microsoft.Extensions.Configuration.Json,注意版本号为6.0.0,修改后的代码

最后

EFCore现在dotnetcore中是主流的ORM框架,再加上XPO早已处于维护状态,在XAF中使用EFCore应该是大势所趋,但已在运行的XPO项目不建议切换到EFCore,因为它们之间还有很多的不同,新的项目可以考虑采用EFCore。

https://www.cnblogs.com/haoxj/p/17410846.html

标签:XPO,Database,项目,示例,Sample,EFCore,XAF
From: https://www.cnblogs.com/haoxj/p/17410846.html

相关文章

  • AdventureWorks2008R2示例数据字典
    表1:人力资源.雇员——HumanResources.Employee 键字段类型空属性引用字段说明1主键BusinessEntityIDint非空 Person.Person雇员记录主键,外键:BusinessEntity.BusinessEntityID。2惟一NationalIDNumbernvarchar(15)非空  唯一的国民识别号码,如社......
  • 【示例】性能场景设计
    参考https://www.cnblogs.com/uncleyong/p/15475614.html 环境为了演示简单,这里使用的是非微服务架构,思路是通用的 单场景重点是目标、加压方式等   混合场景(容量场景)重点是容量目标、单业务目标、业务比例、加压方式等  稳定性场景重点是目标业务量......
  • Java通过反射获取Fields、Method、Constructor示例
    1.getFields()和getDeclaredFields()getFields能获取该类和父类(包括Object)public的属性,getDeclaredFields获取该类public和private的属性2.getMethods()和getDeclaredMethods()getMethods能获取该类和父类(包括Object)public的方法,getDeclaredMethods获取该类public和privat......
  • 12、HDFS Trash垃圾桶回收介绍与示例
    文章目录Hadoop系列文章目录一、介绍二、HDFSTrash功能开启1、关闭HDFS集群2、修改core-site.xml文件3、同步集群配置文件4、启动HDFS集群三、HDFSTrash功能验证1、删除文件并验证2、不进回收站的删除3、从Trash中恢复文件4、清空Trash本文主要介绍HDFSTrash垃圾桶回收。前提......
  • 16、MapReduce的基本用法示例-自定义序列化、排序、分区、分组和topN
    文章目录Hadoop系列文章目录一、pom.xml与测试数据说明、日志配置1、pom.xml2、数据字段说明3、日志配置二、序列化1、需求2、实现说明3、实现1)、bean2)、Mapper3)、Reducer4)、Driver4、验证三、排序1、需求2、实现说明3、实现1)、bean2)、Mapper3)、Reducer4)、Driver4、验证四、分区1......
  • 常用设计模式之.Net示例代码合集
    每一次初学者粉丝朋友,在后台向我咨询编程问题,我除了给他们指导学习路线,我都会建议他们学完基础知识后,一定要要注重编程规范,学习设计模式,修炼内功。虽然说很多程序员,他们日常主要工作是CRUD,但是学习设计模式也是有助于学习公司的框架,另外设计模式是为了可重用代码、让代码更容易被......
  • C# opc ua/da通信源代码示例,应用简单直接可使用。 工业
    C#opcua/da通信源代码示例,应用简单直接可使用。工业上位机必备代码,不含界面,不含界面,不含界面,重要的事说三遍ID:1630626613944731......
  • WPF入门教程系列二十四——DataGrid使用示例(1)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一)      ......
  • Copilot Chat示例应用程序
    微软在SemanticKernel博客上发布了文章:https://devblogs.microsoft.com/semantic-kernel/announcing-copilot-chat/。CopilotChat示例应用程序展示了开发人员如何将AI和LLM智能集成到自己的应用程序中,使开发人员能够使用自然语言处理,文件上传和语音识别等功能更轻松地构建聊天机......
  • 三菱FX3G/3U RTU方式通讯四台台达vfd-e变频器示例 1.需要硬件:fx3g或fx
    三菱FX3G/3URTU方式通讯四台台达vfd-e变频器示例1.需要硬件:fx3g或fx3u一台,fx3g-cnv-bd或fx3u-cnv-bd,fx3u-485ADP-mb.2,实现功能:FB方式编写,正反转停止控制,频率设定。运行数据读取,运行状态读取,通讯响应快,反馈及时。支持更多台变频器的增加,易复制,好操作。3u通讯3台E700变频器的程序......