c# 使用freesql

FreeSql 是一个功能强大的 ORM 框架,支持多种数据库类型,能够简化数据库操作,提高开发效率。在 WinForm 应用中,FreeSql 可以用于实现增删改查等功能。以下是一个简单的使用示例。

配置和初始化

首先,需要通过 NuGet 安装 FreeSql 的相关包,并在配置文件中添加数据库连接字符串。例如:

<appSettings>

<add key="db" value="Server=127.0.0.1;Database=TestDB;User Id=sa;Password=yourpassword;" />

</appSettings>

在代码中初始化 FreeSql:

using FreeSql;

static IFreeSql fsql;

private void Form_Load(object sender, EventArgs e)

{

var connectionString = ConfigurationManager.AppSettings["db"];

fsql = new FreeSqlBuilder()

.UseConnectionString(DataType.SqlServer, connectionString)

.UseAutoSyncStructure(true) // 自动同步实体结构到数据库

.Build();

}

数据模型定义

创建一个数据模型类,用于映射数据库表。例如:

using FreeSql.DataAnnotations;

public class User

{

Column(IsPrimary = true, IsIdentity = true)

public int Id { get; set; }

public string Name { get; set; }

Column(DbType = "nvarchar(200)")

public string Email { get; set; }

}

数据操作示例

查询数据

使用 Queryable 方法查询数据:

var users = fsql.Queryable<User>().ToList();

foreach (var user in users)

{

Console.WriteLine($"ID: {user.Id}, Name: {user.Name}, Email: {user.Email}");

}

插入数据

通过 Insert 方法插入数据:

var newUser = new User { Name = "John Doe", Email = "john.doe@example.com" };

fsql.Insert(newUser).ExecuteAffrows(); // 返回受影响的行数

更新数据

使用 Update 方法更新数据:

var userToUpdate = fsql.Queryable<User>().Where(u => u.Id == 1).First();

userToUpdate.Name = "Jane Doe";

fsql.Update<User>().SetSource(userToUpdate).ExecuteAffrows();

删除数据

通过 Delete 方法删除数据:

fsql.Delete<User>().Where(u => u.Id == 1).ExecuteAffrows();

注意事项

  1. 自动同步结构UseAutoSyncStructure(true) 会自动更新数据库表结构,但可能会修改字段长度或自增属性,需谨慎使用。

  2. 性能优化:FreeSql 提供了多种方法优化查询和操作性能,例如分页查询、批量插入等。

  3. 扩展性:FreeSql 支持多种数据库类型,需根据项目需求选择合适的驱动包。

相关推荐
解救女汉子16 小时前
mysql如何配置元数据锁超时_mysql lock_wait_timeout设置
jvm·数据库·python
下次再写16 小时前
Java互联网大厂面试技术问答实战:涵盖Java SE、Spring Boot、微服务及多场景应用
java·数据库·缓存·面试·springboot·microservices·技术问答
白豆五16 小时前
Redis高级(持久化机制、主从集群、哨兵、分片集群)
数据库·redis·缓存
woniu_buhui_fei16 小时前
Redis知识整理一
数据库·redis·缓存
214396516 小时前
SQL注入防御技术方案_基于正则表达式的输入清洗
jvm·数据库·python
2401_8323655216 小时前
SQL窗口函数与递归查询的区别_如何根据场景选择
jvm·数据库·python
u01091476016 小时前
c++如何处理文件路径中由于不规范的连续斜杠导致的路径解析错误【避坑】
jvm·数据库·python
2301_7965885016 小时前
PHP源码开发用二手硬件划算吗_性价比与稳定性权衡【操作】
jvm·数据库·python
2301_7751481516 小时前
如何通过C#读取Oracle数据库中的图片显示到WinForm_BLOB转Byte[]与流处理
jvm·数据库·python
ERBU DISH16 小时前
修改表字段属性,SQL总结
java·数据库·sql