FreeSql增加新特性Context

FreeSql

作者做了很完善的组件

我看了一下,感觉很实用,使用上有很大的可自定义操作的地方,跟传统Orm固定格式不同,也异于Dapper的设计,支持表达式树

原地址

https://www.cnblogs.com/kellynic/p/10310484.html

关于魔改的内容

个人感觉很喜欢~就魔改了一下,增加了一个上下文

顾名思义,界定数据源的,这个设计其实是仿EF的,因为很多高仿Dapper的组件都是依赖于连接对象,做的一组扩展方法

在中大型系统里面,可能有一组产品,每个有独立的数据库,彼此之间又有关联性,上下文是一组独立的数据源

我们只关注上下文去操作数据即可

    public class UserModel
    {
        public string Account { get; set; }
        public string Nickname { get; set; }
        public string Email { get; set; }
    }

    public class LogModel
    {
        public UserModel User { get; set; }
        public DateTimeOffset Time { get; set; }
    }

    public class UserContext : FreeSqlDbContext
    {
        public FreeSqlDbSet<UserModel> Users { get; set; }
        public FreeSqlDbSet<LogModel> Logs { get; set; }

        public UserContext(FreeSqlBuilder build) : base(build)
        {
        }
    }

这个UserContext就是一个上下文

            var connstr = "Data Source=D:\\db\\_Cache.db;Pooling=true;FailIfMissing=false";
            var factory = new FreeSqlDbContextFactory();

            var context = factory.GetOrAdd<UserContext>(
                new FreeSqlBuilderConfiguration()
                    .UseConnectionString(FreeSql.DataType.Sqlite, connstr)
                    //.UseSlave("connectionString1", "connectionString2") //使用从数据库,支持多个

                    .UseMonitorCommand(
                        cmd => Console.WriteLine(cmd.CommandText), //监听SQL命令对象,在执行前
                        (cmd, traceLog) => Console.WriteLine(traceLog)) //监听SQL命令对象,在执行后

                    .UseLogger(null) //使用日志,不指定默认输出控制台 ILogger
                    .UseCache(null) //使用缓存,不指定默认使用内存 IDistributedCache

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

                    .UseLazyLoading(true) //延时加载导航属性对象,导航属性需要声明 virtual
            );

这个context内的Users和Logs是操作UserModel和LogModel的入口

比如以前的IFreeSql.Insert<UserModel>(UserModel model)

则改为

context.Users.Insert

 

项目地址

我的魔改地址

FreeSql魔改

作者给我的分支地址

FreeSqlContext

posted @ 2019-01-24 15:55  沉迷代码的萌新  阅读(794)  评论(1编辑  收藏  举报