Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法使用实体框架更改给定模型的默认数据库?_C#_Asp.net Mvc_Entity Framework - Fatal编程技术网

C# 有没有办法使用实体框架更改给定模型的默认数据库?

C# 有没有办法使用实体框架更改给定模型的默认数据库?,c#,asp.net-mvc,entity-framework,C#,Asp.net Mvc,Entity Framework,我有一个只需要连接到一台服务器的应用程序。但是,此服务器有4个应用程序需要与之交互的不同数据库 目前,“我知道怎么做”,我必须在Web.Config文件中为每个数据库创建一个新的连接字符串。然后,每个连接将有一个单独的上下文类,该类扩展了DbContext。最后,每个上下文都有一个表示每个表的模型列表 我希望我能使用一个连接和一个上下文。为了做到这一点,我需要以某种方式指出不属于默认数据库的模型所属的数据库 是否有方法更改每个模型的默认数据库名称?我更愿意使用注释来改变它,这是我正在思考的一个例

我有一个只需要连接到一台服务器的应用程序。但是,此服务器有4个应用程序需要与之交互的不同数据库

目前,“我知道怎么做”,我必须在
Web.Config
文件中为每个数据库创建一个新的连接字符串。然后,每个连接将有一个单独的上下文类,该类扩展了
DbContext
。最后,每个上下文都有一个表示每个表的模型列表

我希望我能使用一个连接和一个上下文。为了做到这一点,我需要以某种方式指出不属于默认数据库的模型所属的数据库

是否有方法更改每个模型的默认数据库名称?我更愿意使用注释来改变它,这是我正在思考的一个例子

[InitialCatalog("SecondaryDatabaseName")]
public class Site
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    public string Name{ get; set; }
    public bool IsActive { get; set; }
}

数据库是在连接字符串中指定的。没有理由在模型本身中对其进行硬编码-这类似于对服务器名称进行硬编码。如果您希望相同的上下文连接到不同的数据库,只需更改其连接字符串,但如果我这样做,并尝试在不更改连接字符串的情况下访问模型,我将得到一个错误。如果我也提示模型它所属的数据库,那么我就不必担心出错。也许,我不会在模型类本身上指定数据库名称,而是在上下文中这样做,以便它知道它应该指向哪个数据库不,这只是意味着默认情况下你无法得到它,因为你想要的东西不是很多人都需要的。你可以很容易地做一些你想做的事情。