?
当前对象操作数据库写法和EF Core极度类似,因为现在大部分程序员都懒得去写SQL,再一个就是项目作大了或其它原因要改数据库,每次改数据库,那么写的SQL语句大部分要作调整,相当麻烦,并且写SQL时字段极容易写错,所以就出现了好多ORM框架,极大的提高了程序员的开发效率 。
接下来我们讲一下 XiaoFeng.Data.IQueryableX的用法 。
我们在上一节 数据库操作 中有讲过 ConnectionConfig 数据库连接配置对象,不明白的同学可以这节看 。本节继续用当前配置对象 。
建立数据库连接配置对象,FayElf.Web可为配置名称,也可以为连接串server=.;data=https://www.huyubaike.com/biancheng/testdata;uid=da;pwd=123; 后边参数为数据库驱动 。
var ConnConfig = new ConnectionConfig("FayElf.Web", DbProviderType.SqlServer);
文章插图
文章插图
使用 IQueryableX 可以有两种使用方式,下边模型默认就是数据库中的字段名称,也就是它们两个名称要一一对应 。如果不一样,则可以用 XiaoFeng.Column 属性去配置数据库中表字段名称,下边分别举例说明 。
通过 DataHelperX 创建一个 IQueryableX 对象 然后进行 IQueryableX 运算 去查数据库,IQueryableX和EF Core中的 IQueryable 非常类似,但运行效率比 IQueryable 快很多,并支持多数据库切换 。
1.继承了 XiaoFeng.Model.Entity 实体模型的,我们暂且叫A方案,如下边模型
/// <summary>/// 分类模型/// </summary>[Table("Category","分类", "CategoryId",ModelType.Model,"FayElf.Web",0)]public class Category : Entity<Category>{#region 构造器/// <summary>/// 无参构造器/// </summary>public Category(){}#endregion#region 属性/// <summary>/// 分类名称/// </summary>[Column(Name="Names")] public string Name { get; set; }/// <summary>/// 分类说明/// </summary>public string Description { get; set; }/// <summary>/// 分类ID/// </summary>public int CategoryId { get; set; }/// <summary>/// 父节点ID/// </summary>public int ParentId { get; set; }/// <summary>/// 添加日期/// </summary>public DateTime AddDate { get; set; }#endregion#region 方法#endregion}
文章插图
文章插图
2.没有继续XiaoFeng.Model.Entity实体模型的,我们暂且叫B方案,如下模型
/// <summary>/// 用户模型/// </summary>public class UserModel{#region 构造器/// <summary>/// 无参构造器/// </summary>public UserModel(){}#endregion#region 属性/// <summary>/// Id/// </summary>public long Id { get; set; }/// <summary>/// 帐号/// </summary>public string Account { get; set; }/// <summary>/// 密码/// </summary>public string Password { get; set; }/// <summary>/// 性别/// </summary>public int Sex { get; set; }/// <summary>/// 出生日期/// </summary>public DateTime BirthDay { get; set; }/// <summary>/// 添加日期/// </summary>public DateTime AddDate { get; set; }#endregion#region 方法#endregion}
文章插图
经验总结扩展阅读
- flutter系列之:永远不用担心组件溢出的Wrap
- 荣耀x20评测_荣耀x20评测表现
- 抛砖系列之redis监控命令
- .NET性能系列文章一:.NET7的性能改进
- dubbo的一系列配置与搭建
- 记一次 .NET 某娱乐聊天流平台 CPU 爆高分析
- vivox60充电时间_vivox60充电快吗
- MassTransit | .NET 分布式应用框架
- 使用 Windows Core Audio APs 进行 Loopback Recording 并生成 WAV 文件
- 基于PL022 SPI 控制器 海思3516系列芯片SPI速率慢问题深入分析与优化