⭐️ Furion v4 版本支持【所有历史版本】无缝升级,一套代码兼容 .NET 5+ ⭐️
Skip to main content

9.16 Sql 模板

9.16.1 Sql 模板

通常我们程序中执行数据库的 sql 语句都写在了程序集中,随程序一起编译,后续需要修改,则重新编译代码。

所以,Furion 创造出一种 Sql 模板的方式,程序执行 Sql 时,只需要使用特殊标记即可:#(模板Key),这些真实的 Sql 配置在 .json.xml 配置文件中。

如:

  • Json 方式
{  "Select.User": "select * from User where id > @id"}
  • Xml 方式
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<Select.User>select * from User where id > @id</Select.User>
</configuration>

9.16.2 Sql 模板优缺点

9.16.2.1 优点

  • 支持 Sql 动态配置,可在程序运行时动态调配 Sql 语句
  • 支持程序 Sql 语句加密

9.16.2.2 缺点

  • 需增加对应配置文件
  • 不容易调试 Sql 代码

9.16.3 如何使用

在执行 Sql 的时候,只需要填写指定模板即可。

9.16.3.1 常规使用

// 仓储方式var users = repository.SqlQuery<User>("#(Select.User)", new { id = 1});// 懒人方式var users = "#(Select.User)".SqlQuery<User>(new { id = 1});// Sql 代理方式[SqlExecute("#(Select.User)")]List<User> GetUser(int id);

9.16.3.2 高级嵌套

var users = repository.SqlQuery<User>(@"select * from user uleft join #(User.Detail) d on u.Id = d.UserIdwhere id > @id");

9.16.4 Sql 模板配置

9.16.4.1 普通模式

{  "Select.User": "select * from User"}

9.16.4.2 更多配置

功能移除声明

以下内容在 Furion 2.13 + 版本中已移除。

{  "Select.User": {    "Sql": "select * from User where id > @id and Name = @name",    "Params": [      {        "Name": " Id",        "Value": "1",        "DbType": "Int16",        "Size": 10      },      {        "Name": " Name",        "Value": "百小僧",        "DbType": "String",        "Size": 10      }    ]  }}

9.16.5 反馈与建议

与我们交流

给 Furion 提 Issue

演练场