tnblog
首页
视频
资源
登录

FreeSql使用详解

11851人阅读 2022/3/8 13:28 总访问:39117 评论:0 收藏:2 手机
分类: .NET

FreeSql 主要对于数据库的增删改查操作,本身不难,难的是入门,本章主要讲解对于Freesql的入门配置
本章讲解所需工具:MySQL,VS2022(工具不唯一)
1.引入Freesql依赖包:
   官网命令为:

dotnet add package FreeSql

输出:未找到指定包
解决方案:(网上挺多的)

dotnet add 项目名称 package FreeSql

第二种方法:
              工具>NuGet程序包管理器>管理解决方案的NuGetc程序包>浏览>搜索Freesql
              安装带有数据库名的(mysql/sqlserver)
2.配置:2022是Program.cs

var connectionString = "Data Source=127.0.0.1; Port = 3306; User ID = root; Password = 123456; " + 
    "Initial Catalog=sys;Charset=utf8;SslMode=none;Max pool size=10";

  IFreeSql fsql = new FreeSql.FreeSqlBuilder()
     .UseConnectionString(FreeSql.DataType.MySql, connectionString)
     .UseAutoSyncStructure(true) //自动同步实体结构到数据库,FreeSql不会扫描程序集,只有CRUD时才会生成表。
     .Build();

builder.Services.AddSingleton<IFreeSql>(fsql);
builder.Services.AddScoped<ISqlStr, SqlStr>();
//Initial Catalog是数据库的库名
//注意:该文件内有一句代码:var app = builder.Build();
//本句代码必须在上述代码的下面(后面)否则运行vs的时候会输出无法解析的error

3.1 运用:
 (1)创建接口:IFreeSql

 public partial interface  ISqlStr
    {
        int Insert();
    }

(2)创建类 SqlStr>用于实现接口(注:该类里面书写构造函数注入Freesql工具类)

private IFreeSql fsql;
        public SqlStr(IFreeSql _fsql)
        {
            fsql = _fsql;
        }
        /// <summary>
        /// 添加一条数据
        /// </summary>
        /// <returns></returns>
        public int Insert()
        {
            var items = new List<Topic>();
            for (var a = 0; a < 10; a++)
                items.Add(new Topic { BlogId = a + 1, Url = $"newtitle{a}", Rating = a * 100 });
            
            int t1 = fsql.Insert(items.First()).ExecuteAffrows();
            return t1;
        }
       //这里的Topic是自己创建的实体类
       //添加方法不唯一,这里是实例类for添加数据再取第一条添加至数据库
       //这里仅列举一个添加单条数据的方法,其余方法官网上有

3.2 使用方法:
     vs版本不同可能add的方法不同,主要是给接口类和实现类配置关系

builder.Services.AddScoped<ISqlStr, SqlStr>();
//vs2022的是AddScoped
//配置文件内的代码推荐都写在var app = builder.Build();的前面

最后就是调用方法啦,当然,还是要借助依赖注入的方法(注入方法不唯一,有特性注入等)

 private readonly ILogger<HomeController> _logger;
        private readonly ISqlStr _Isql;
        public HomeController(ILogger<HomeController> logger,ISqlStr Isql)
        {
            _Isql = Isql;
             _logger = logger;
        }
   //控制器内:
   int count=_Isql.Insert();

另外,本文章使用vs创建的模板是ASP.NET Core Web应用(模型-视图-控制器)

评价
与其用时间去get一个未知的以后,不如做好现在,set自己一个好的以后
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术