使用DbFirst生成实体类,通过实体类快速实现增删改查操作
作者 : Jacky 发布于 2023-05-23 18:03:52 浏览 1037 次
超级便捷的增删改查

创建一个数据库,这里我创建一个sqlite数据库,并且在里面创建一张表。mysql、sqlserver、达梦都可以的。

创建好之后,就可以直接生成实体类了。

var db = new XiaoFeng.Data.DataHelper(new ConnectionConfig("MonitoringDoor"));
db.GetData().CreateModel(@"D:\\MonitoringDoors\\Model", "", "MonitoringDoor");

这两行就是生成实体类的方法,
第一行代码的意思是:连接数据库,
第二行代码的意思是:生成model实体类到指定的位置。
MonitoringDoor 是数据库的名字。

下面开始介绍,如何生成数据库连接串配置文件。

 var config = DataBase.Current;
 config.Add("MonitoringDoor", new ConnectionConfig[]
            {
                new ConnectionConfig
                {
                    ProviderType = DbProviderType.SQLite,
                    ConnectionString="Data Source=D:\\MonitoringDoor.db3;",
                }
            });
config.Save();

执行这个代码,会在你的bin文件下生成一个Config 文件,
复制到你项目的根目录,修改下里面的连接串路径:

{
   "MonitoringDoor": [
    {
      "ProviderType"/*驱动类型*/: "SQLite",
      "ConnectionString"/*数据库连接字符串*/: "Data Source={/}\\MonitoringDoor.db3;",
      "IsTransaction"/*是否启用事务处理*/: false,
      "CommandTimeOut"/*执行超时时间*/: 0,
      "CacheTimeOut"/*缓存时长 单位为秒 0为永久缓存*/: 600,
      "CacheType"/*缓存类型 Default 默认, No 不缓存, Memory 内存, Disk 磁盘, Redis, Memcache, MongoDB*/: "No",
      "IsolationLevel"/*事务级别 DbNull 空级别, Serializable 串行读, RepeatableRead 可重复读, ReadCommitted 提交读, ReadUncommitted 未提交读, Snapshot 隔离未提交读, Chaos 混乱读, Unspecified 未指定*/: "Unspecified",
      "IsPool"/*是否启用连接池*/: false,
      "MaxPool"/*连接池最大数量*/: 100
    }
  ]
}

这些系统都生成好的了,
你只需要修改 “ConnectionString”/数据库连接字符串/: “Data Source={/}\MonitoringDoor.db3;”,
这个路径{/} 就是当前的路径。核查无误后,

执行这两行代码,然后去你的路径找到生成的路径,路径可以写的项目的model路径,这样你就不用人工copy了。

var db = new XiaoFeng.Data.DataHelper(new ConnectionConfig("MonitoringDoor"));
db.GetData().CreateModel(@"D:\\MonitoringDoors\\Model", "", "MonitoringDoor");

上述工作做好之后,找个控制器,直接使用生成的model 类可以直接增删改查。
例如分页:
var list = DeviceInfoModel.Create.QueryableX.Take(6).Skip(1).ToList();
直接查询
var list = DeviceInfoModel.Create.ToList();
更新

var dev = DeviceInfoModel.Create.Find(x => x.ID == 2);
dev.InspectionQuantity++;
dev.Update();
//也可以根据条件进行更新
DeviceInfoModel.Create.Where(x => x.ID == 2).Update(dev);
所有评论(0)