Way.EntityDB是一个基于EF Core的数据层框架,它取消了EF Core的Migration机制,因为Migration并不是通用的,比如说sql server生成的migration,如果换成sqlite,运行时会报错的,也就是数据库不能更换。
Way.EntityDB内置建模工具,通过图形化建表,生成Model对象代码,并且它会把表结构的修改过程,全部记录下来,涵盖在Model代码里面,所以,在新的代码运行时,数据库也会自动更新到最新结构。
举个例子,当你把一个字段的名字从column1,更改为column2,EF Core生成的migration,就是把column1删除,并添加一个column2,这样,column1的现有数据就会丢失。而EntityDB则不一样,它只会把column1改名为column2,
因为它记录的是表结构修改的过程,而不是匹对Model类的前后变化。
Way.EntityDB源码位置:
https://github.com/simpleway2016/EntityDB
启动服务器端Way.EntityDB是允许多人同时使用,所以,分为服务器和客户端。
下载源码,编译后,在Debug/netcoreapp2.0文件夹里面,创建一个批处理文件run6062.bat,内容如下:
dotnet Way.EJServer.dll 6062
6062是本机任意一个没有使用的端口号,表示以6062为端口,创建一个服务器工作空间
运行run6062.bat,启动服务器端
运行客户端
编译并运行EJClient.exe
server url:https://localhost:6062
user name:sa
password:1
登录进去,由于没有工程项目,所以界面空白,点击【project】菜单,创建一个项目
右键点击【Database】,新建一个数据库
再新建一个数据模块UserInfo
双击UserInfo,在数据模块里面,空白处点击右键,新建数据表
这样,一张数据表就创建完成
编程使用数据表新建一个.net core 控制台项目
给这个项目安装nuget包:Way.EntityDB
然后,回到EJClient,在TestDB处点击右键,点击【生成数据库模型代码】
保存到刚才创建的项目里面
这样,Model类就准备好了,开始写代码
using System; using System.Linq; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var db = new MyDB.DB.TestDB("data source='F:\\mytestdb.dat'", Way.EntityDB.DatabaseType.Sqlite); //插入数据 var user = new MyDB.UserInfo() { UserName = "Jack", Password = "123" }; //插入到数据库 db.Update(user); //从数据库查询数据 var userlist = (from m in db.UserInfo select m).ToArray(); //修改数据 var jack = db.UserInfo.FirstOrDefault(m => m.UserName == "Jack"); jack.Password = "567"; db.Update(jack); //删除数据 db.Delete(jack); } } }