在.NET中使用实体框架对2个数据库

发布于 2025-02-07 20:34:14 字数 1033 浏览 1 评论 0原文

我不知道如何使用EF分别连接到2个数据库,我只有1个数据库。

我必须建模ActivityLogregistrationData

这是连接字符串:

<connectionStrings>
    <add name="DevSaveLog" 
         connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=BIFASTAPI_Log;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
    <add name="DevSaveRegis" 
         connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=BIFASTAPI_Reg;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

这是我现有的dcontext(使用旧连接字符串),

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext() : base("DefaultConnection")
    {
    }

    public DbSet<ActivityLog> ActivityLogs { get; set; } //<<< I want this in DevSaveLog
    public DbSet<RegistrationData> RegistrationDatas { get; set; } //<< I want this in DevSaveRegis
}

该如何应用?谢谢您的英语不好的:)

I have no idea how to use EF to connect to 2 databases separately, I just use 1 database only before.

I have to model ActivityLog and RegistrationData.

Here are the connection strings:

<connectionStrings>
    <add name="DevSaveLog" 
         connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=BIFASTAPI_Log;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
    <add name="DevSaveRegis" 
         connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=BIFASTAPI_Reg;Integrated Security=True" 
         providerName="System.Data.SqlClient" />
</connectionStrings>

This is my existing DContext (using an old connection string)

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext() : base("DefaultConnection")
    {
    }

    public DbSet<ActivityLog> ActivityLogs { get; set; } //<<< I want this in DevSaveLog
    public DbSet<RegistrationData> RegistrationDatas { get; set; } //<< I want this in DevSaveRegis
}

How can I apply those? Thanks sorry for my bad English :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

逆夏时光 2025-02-14 20:34:14

正如本在评论中已经指出的那样,您将需要两个单独的DBContext类。每个都将使用自己的连接字符串来连接其特定数据库。您可以使用依赖项注入注入特定的连接字符串。

public class LogContext : DbContext
{
    private IConfiguration config { get; set; }
    public DbSet<ActivityLog> ActivityLogs { get; set; }

    public LogContext(IConfiguration config)
    {
        this.config = config;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        // use configuration string called "DevSaveLog"
    }
}

public class RegistrationContext : DbContext
{
    private IConfiguration config { get; set; }
    public DbSet<RegistrationData> RegistrationDatas { get; set; }

    public RegistrationContext(IConfiguration config)
    {
        this.config = config;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        // use configuration string called "DevSaveRegis"
    }
}

然后,您想将这两个上下文注入班级,您想与它们一起使用。

例子:

public class Example
{
    private LogContext logContext {get;set;}
    private RegistrationContext registrationContext {get;set;}
    public Example(LogContext log, RegistrationContext registration)
    {
        this.logContext = log;
        this.registrationContext = registration;
    }

    public void ExampleMethod()
    {
        var logs = logContext.ActivitryLogs;
        var registrations = registrationContext.RegistrationDatas;
    }
}

As Ben already pointed out in the comments, you will need two seperate DbContext Classes. Each will use its own connection string in order to connect to its specific database. You might inject your specific connection string using Dependency Injection.

public class LogContext : DbContext
{
    private IConfiguration config { get; set; }
    public DbSet<ActivityLog> ActivityLogs { get; set; }

    public LogContext(IConfiguration config)
    {
        this.config = config;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        // use configuration string called "DevSaveLog"
    }
}

public class RegistrationContext : DbContext
{
    private IConfiguration config { get; set; }
    public DbSet<RegistrationData> RegistrationDatas { get; set; }

    public RegistrationContext(IConfiguration config)
    {
        this.config = config;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
    {
        // use configuration string called "DevSaveRegis"
    }
}

You then want to inject both of these Context into the class, you want to use them with.

Example:

public class Example
{
    private LogContext logContext {get;set;}
    private RegistrationContext registrationContext {get;set;}
    public Example(LogContext log, RegistrationContext registration)
    {
        this.logContext = log;
        this.registrationContext = registration;
    }

    public void ExampleMethod()
    {
        var logs = logContext.ActivitryLogs;
        var registrations = registrationContext.RegistrationDatas;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文