zoukankan      html  css  js  c++  java
  • 轻量ORM-SqlRepoEx (二)初始化SqlRepoEx

    一、SqlRepoEx引用

    暂时没放至nuget上,可以直接到https://github.com/AzThinker/SqlRepoEx下载源码,编译引用。

    (一)、静态引用

    1、需引用以下dll在SqlRepoExSqlRepo.SqlServer.StaticinDebug etstandard2.0目录下:

    (1)、SqlRepoEx.dll;

    (2)、SqlRepoEx.SqlServer.dll;

    (3)、SqlRepoEx.SqlServer.Static.dll;

     

    2、初始化SqlRepoEx工厂类

    var connectionProvider = new AppConfigFirstConnectionProvider();

    RepoFactory.UseConnectionProvider(connectionProvider);

    RepoFactory.UseLogger(new NoOpSqlLogger())

     

    以上为一个简单初始方式

    (1)、AppConfigFirstConnectionProvider是一个简单的配置管理实现,如果需自定义自己的连接提供者,实现ISqlConnectionProvider接口即可,SqlRepoEx中SqlRepoEx.SqlServer.ConnectionProviders实现了四个标准数据库连接管理器。

    (2)、使用RepoFactory的静态方法注册配置提供者,RepoFactory.UseConnectionProvider(connectionProvider);

    (3)、注册一个日志器(必需注册一个);

     

    二、使用Autofac注入方式

    1、需引用以下dll

    在SqlRepoExSqlRepo.SqlServer.AutofacinDebug etstandard2.0目录下:

    (1)、SqlRepoEx.dll;

    (2)、SqlRepoEx.SqlServer.dll;

    (3)、SqlRepoEx.SqlServer.Autofac.dll;

    2、Autofac容器构建

                var containerBuilder = new ContainerBuilder();

                containerBuilder.RegisterModule<SqlRepoSqlServerAutofacModule>();

                var connectionProvider = new AppConfigFirstConnectionProvider();

                containerBuilder.RegisterInstance(connectionProvider)

                                .As<IConnectionProvider>();

                // ... 其他类型注册

                var container = containerBuilder.Build();

     

    三、服务注册

    1、需引用以下dll

    在SqlRepoExSqlRepo.SqlServer.ServiceCollectioninDebug etstandard2.0目录下:

    (1)、SqlRepoEx.dll;

    (2)、SqlRepoEx.SqlServer.dll;

    (3)、SqlRepoEx.SqlServer.ServiceCollection.dll;

    2、以下是在Asp.Core中初始方式

    public void ConfigureServices(IServiceCollection services)

            {

         ...

                 services.AddSqlRepo();

                services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

            }

     

    四、资源工厂调用

    以下为一简单使用

    1、定义一个简单类

     public class ToDo : Entity<int>

        {

            public DateTime CreatedDate { get; set; }

            public bool IsCompleted { get; set; }

            public string Task { get; set; }

        }

        (1)、在SqlRepoEx不必从Entity<int>中继承,如果你使用SqlRepo则是必需的;

        (2)、声明的类型不必依赖于数据库,这点与EF是有很大区别的;

    2、调用

    var repository = RepoFactory.Create<ToDo>();

                var results = repository.Query()

                                        .Select(e => e.Id, e => e.Task, e => e.CreatedDate)

                                        .Where(e => e.IsCompleted == false)

                                        .Go();

                foreach (var row in results)

                {

                    Console.WriteLine($"{row.Id},{row.Task},{row.IsCompleted},{row.CreatedDate}");

     

                }

        (1)、使用RepoFactory的静态方法,创建一个Repository;

        (2)、根据需求,通过Repository进行业务操作

     

  • 相关阅读:
    未定义的标示符“RECT”,引入了windows.h头文件也没有用?
    解决Opencv高低版本不兼容问题
    在OpenCV2.2后的版本中没有CvvImage类的解决方法(及出现错误:IntelliSense: 未定义标识符 "CvvImage" )
    opencv中Mat与IplImage,CVMat类型之间转换
    opencv中VideoCapture和cvCapture有什么区别?
    2019-2020-1 20175302_20175314_20175316 实验三 并发程序
    2019-2020-1 20175314 《信息安全系统设计基础》第8周学习总结
    2019-2020-1 20175302_20175314_20175316 实验二 固件程序设计
    2019-2020-1 20175302_20175314_20175316 实验一 开发环境的熟悉
    *2019-2020-1 20175302_20175314_20175316 实验一 开发环境的熟悉*
  • 原文地址:https://www.cnblogs.com/athinker/p/9707617.html
Copyright © 2011-2022 走看看