freesql多庫訪問


顧名思義,因為需要訪問到兩個數據庫,一個日志庫,一個業務庫。之前開發都是用ado.net鏈接,最近使用freesql這個orm,就需要改動一下了。之前使用到freesql都是鏈接一個數據庫就ok,現在數據庫分開了,那就有了這么個需求。

首先引用IdleBus

 

 

ps:具體的使用說明可以參考IdleBus 空閑對象管理容器 - .NET開發社區 | CTOLib碼庫

新建一個DbBus類

public enum DbName { db0, db1 }
public class DbBus : IdleBus<DbName, IFreeSql>
{
    public DbBus() : base(TimeSpan.FromMinutes(30)) { }
}

超過30秒沒有使用就銷毀實例

使用的是.net core 所以在Startup.cs里注冊一下。我對這個注冊還不是很熟,功能實現了就把使用記錄下來了。如果有哪位大神指導一下我的錯誤,會非常感謝。

static DbBus ib = new DbBus();
public Startup(IConfiguration configuration)
{
    ib.Register(DbName.db0, () => new FreeSqlBuilder().UseConnectionString(DataType.SqlServer, @"Server=;Database=Logs;Uid=;Pwd=;").Build());
    ib.Register(DbName.db1, () => new FreeSqlBuilder().UseConnectionString(DataType.SqlServer, @"Server=;Database=Busi;Uid=;Pwd=;").Build());
    Configuration = configuration;
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddSingleton(ib);//使用的時候用 Get 方法,不要存其引用關系
    services.AddControllersWithViews();
}

在controller里這么添加進來

IFreeSql _fsqlUser;
IFreeSql _fsql;
public ProfileController(DbBus ib)
{
    _fsqlUser = ib.Get(DbName.db1); 
    _fsql = ib.Get(DbName.db0);
}

在下面的action方法里就可以使用了。

_fsql.Select<T>().Limit(10).ToList();

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM