zoukankan      html  css  js  c++  java
  • FreeSql (一)入门

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

    QQ群:4336577(已满)、8578575(在线)

    模型

    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

    static IFreeSql fsql = new FreeSql.FreeSqlBuilder()
        .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|db1.db")
        .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 【开发环境必备】自动同步实体结构到数据库,程序运行中检查实体创建或修改表结构
    UseNoneCommandParameter this 不使用命令参数化执行,针对 Insert/Update,也可临时使用 IInsert/IUpdate.NoneParameter()
    UseGenerateCommandParameterWithLambda this 生成命令参数化执行,针对 lambda 表达式解析
    UseLazyLoading this 开启延时加载功能
    UseMonitorCommand this 监视全局 SQL 执行前后
    UseNameConvert this 自动转换实体、属性名称 Entity Property -> Db Filed
    UseExitAutoDisposePool this 监听 AppDomain.CurrentDomain.ProcessExit/Console.CancelKeyPress 事件自动释放连接池 (默认true)
    Build<T> IFreeSql<T> 创建一个 IFreeSql 对象,注意:单例设计,不要重复创建

    ConnectionStrings

    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.MsAccess

    Provider=Microsoft.Jet.OleDb.4.0;Data Source=d:/accdb/2003.mdb;max pool size=5

    DataType.Dameng(达梦)

    server=127.0.0.1;port=5236;user id=2user;password=123456789;database=2user;poolsize=5

    DataType.ShenTong(神通)

    HOST=192.168.164.10;PORT=2003;DATABASE=OSRDB;USERNAME=SYSDBA;PASSWORD=szoscar55;MAXPOOLSIZE=2

    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.OdbcKingbaseES (人大金仓)

    Driver={KingbaseES 8.2 ODBC Driver ANSI};Server=127.0.0.1;Port=54321;UID=USER2;PWD=123456789;database=TEST

    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

    Packages

    Package Name Version 说明
    FreeSql.Repository NETStandard2.0、net45、net40 通用仓储 + UnitOfWork 实现
    FreeSql.DbContext NETStandard2.0、net45、net40 EFCore 的使用风格实现
    FreeSql.Provider.MySql NETStandard2.0、net45、net40 基于 MySql.Data(Oracle官方)
    FreeSql.Provider.MySqlConnector NETStandard2.0、net45 基于 MySqlConnector
    FreeSql.Provider.PostgreSQL NETStandard2.0、net45 基于 PostgreSQL 9.5+
    FreeSql.Provider.SqlServer NETStandard2.0、net45、net40 基于 SqlServer 2005+
    FreeSql.Provider.Sqlite NETStandard2.0、net45、net40
    FreeSql.Provider.Oracle NETStandard2.0、net45、net40
    FreeSql.Provider.MsAccess NETStandard2.0、net45、net40
    FreeSql.Provider.Dameng NETStandard2.0、net45、net40 基于 达梦数据库
    FreeSql.Provider.ShenTong NETStandard2.0、net45、net40 基于 神州通用数据库
    FreeSql.Provider.Odbc NETStandard2.0、net45、net40 基于 ODBC
    FreeSql.Extensions.LazyLoading NETStandard2.0、net45、net40 延时属性扩展包
    FreeSql.Extensions.JsonMap NETStandard2.0、net45、net40 Json 序列化扩展包
    FreeSql.Extensions.Linq NETStandard2.0、net45、net40 LinqToSql IQueryable 扩展包
    FreeSql.Extensions.BaseEntity NETStandard2.0
    FreeSql.Extensions.Generator NETCoreapp3.1 从数据库生成实体类

    系列文章导航

  • 相关阅读:
    转“C++之文件IO操作流”
    编译过程的一些小知识——#pragma once与 #ifndef的区别以及介绍
    编译过程的一些小知识——内部连接与外部连接
    VC MFC如何使用Console输出调试信息..
    windows 下ping命令,t选项
    电力间隔定义
    这样的要求不过分
    拾零之 :if 判断顺序的问题
    CMarkup 解析XML
    XinZhou housing mobile phone
  • 原文地址:https://www.cnblogs.com/FreeSql/p/11531300.html
Copyright © 2011-2022 走看看