美文网首页.NETdotNET
FreeSql 教程 (一)入门

FreeSql 教程 (一)入门

作者: 叶先生_34e6 | 来源:发表于2020-03-10 11:02 被阅读0次

    FreeSql是一个功能强大的 .NET ORM 功能库,支持 .NetFramework 4.0+、.NetCore 2.1+、Xamarin 等支持 NetStandard 所有运行平台。(QQ群:4336577)

    FreeSql 以 MIT 开源协议托管于 github:https://github.com/2881099/FreeSql

    模型

    FreeSql 使用模型执行数据访问,模型由实体类表示数据库表或视图,用于查询和保存数据。

    可从现有数据库生成实体模型,FreeSql 提供 IDbFirst 接口实现生成实体模型

    或者手动创建模型,基于模型创建或修改数据库,提供 ICodeFirst 同步结构的 API(甚至可以做到开发阶段自动同步)。

    using FreeSql.DataAnnotations;
    using System;
    
    public class Blog
    {
        [Column(IsIdentity = true, IsPrimary = true)]
        public int BlogId { get; set; }
        public string Url { get; set; }
        public int Rating { get; set; }
    }
    

    声明

    dotnet add packages FreeSql.Provider.Sqlite

    var connstr = @"Data Source=|DataDirectory|\db1.db;Attachs=db2.db;Pooling=true;Max Pool Size=10";
    
    static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
        .UseConnectionString(FreeSql.DataType.Sqlite, connstr)
        .UseAutoSyncStructure(true) //自动同步实体结构到数据库
        .Build(); //请务必定义成 Singleton 单例模式
    

    注意: IFreeSql 在项目中应以单例声明,而不是在每次使用的时候创建。

    迁移

    程序运行中FreeSql会检查AutoSyncStructure参数,以此条件判断是否对比实体与数据库结构之间的变化,达到自动迁移的目的。

    查询

    var blogs = fsql.Select<Blog>()
        .Where(b => b.Rating > 3)
        .OrderBy(b => b.Url)
        .Skip(100)
        .Limit(10) //第100行-110行的记录
        .ToList();
    

    插入

    var blog = new Blog { Url = "http://sample.com" };
    blog.BlogId = (int)fsql.Insert<Blog>()
        .AppendData(blog)
        .ExecuteIdentity();
    

    更新

    fsql.Update<Blog>()
        .Set(b => b.Url, "http://sample2222.com")
        .Where(b => b.Url == "http://sample.com")
        .ExecuteAffrows();
    

    删除

    fsql.Delete<Blog>()
        .Where(b => b.Url == "http://sample.com")
        .ExecuteAffrows();
    

    FreeSqlBuilder

    方法 返回值 说明
    UseConnectionString this 设置连接串
    UseSlave this 设置从数据库,支持多个
    UseConnectionFactory this 设置自定义数据库连接对象(放弃内置对象连接池技术)
    UseAutoSyncStructure this 【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体创建或修改表结构
    UseSyncStructureToLower this 转小写同步结构,适用 PostgreSQL
    UseSyncStructureToUpper this 转大写同步结构,适用 Oracle/达梦
    UseNoneCommandParameter this 不使用命令参数化执行,针对 Insert/Update,也可临时使用 IInsert/IUpdate.NoneParameter()
    UseGenerateCommandParameterWithLambda this 生成命令参数化执行,针对 lambda 表达式解析
    UseLazyLoading this 开启延时加载功能
    UseMonitorCommand this 监视全局 SQL 执行前后
    UseEntityPropertyNameConvert this 自动转换实体属性名称 Entity Property -> Db Filed
    Build<T> IFreeSql<T> 创建一个 IFreeSql 对象,注意:单例设计,不要重复创建

    ConnectionStrings

    DataType ConnectionString
    DataType.MySql Data Source=127.0.0.1;Port=3306;User ID=root;Password=root; Initial Catalog=cccddd;Charset=utf8; SslMode=none;Min pool size=1
    DataType.PostgreSQL Host=192.168.164.10;Port=5432;Username=postgres;Password=123456; Database=tedb;Pooling=true;Minimum Pool Size=1
    DataType.SqlServer Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Min Pool Size=1
    DataType.Oracle user id=user1;password=123456; data source=//127.0.0.1:1521/XE;Pooling=true;Min Pool Size=1
    DataType.Sqlite Data Source=|DataDirectory|\document.db; Attachs=xxxtb.db; Pooling=true;Min Pool Size=1
    DataType.OdbcMySql Driver={MySQL ODBC 8.0 Unicode Driver}; Server=127.0.0.1;Persist Security Info=False; Trusted_Connection=Yes;UID=root;PWD=root; DATABASE=cccddd_odbc;Charset=utf8; SslMode=none;Min Pool Size=1
    DataType.OdbcSqlServer Driver={SQL Server};Server=.;Persist Security Info=False; Trusted_Connection=Yes;Integrated Security=True; DATABASE=freesqlTest_odbc; Pooling=true;Min Pool Size=1
    DataType.OdbcOracle Driver={Oracle in XE};Server=//127.0.0.1:1521/XE; Persist Security Info=False; Trusted_Connection=Yes;UID=odbc1;PWD=123456; Min Pool Size=1
    DataType.OdbcPostgreSQL Driver={PostgreSQL Unicode(x64)};Server=192.168.164.10; Port=5432;UID=postgres;PWD=123456; Database=tedb_odbc;Pooling=true;Min Pool Size=1
    DataType.OdbcDameng (达梦) Driver={DM8 ODBC DRIVER};Server=127.0.0.1:5236; Persist Security Info=False; Trusted_Connection=Yes; UID=USER1;PWD=123456789
    DataType.Odbc Driver={SQL Server};Server=.;Persist Security Info=False; Trusted_Connection=Yes;Integrated Security=True; DATABASE=freesqlTest_odbc; Pooling=true;Min pool size=1

    Providers

    Package Name Version
    FreeSql.Provider.MySql NETStandard2.0、net45、net40
    FreeSql.Provider.MySqlConnector NETStandard2.0、net45
    FreeSql.Provider.PostgreSQL NETStandard2.0、net45
    FreeSql.Provider.SqlServer NETStandard2.0、net45、net40
    FreeSql.Provider.Sqlite NETStandard2.0、net45、net40
    FreeSql.Provider.Oracle NETStandard2.0、net45、net40
    FreeSql.Provider.Odbc NETStandard2.0、net45、net40
    FreeSql.Extensions.LazyLoading NETStandard2.0、net45、net40
    FreeSql.Extensions.JsonMap NETStandard2.0、net45、net40
    FreeSql.Extensions.BaseEntity NETStandard2.0

    系列文章导航

    相关文章

      网友评论

        本文标题:FreeSql 教程 (一)入门

        本文链接:https://www.haomeiwen.com/subject/ebdudhtx.html