Как создать экземпляр DbContext указанного типа базы данных - PullRequest
0 голосов
/ 29 декабря 2018

Я знаю, что возвращаемое значение по умолчанию - это тип базы данных SQL Server, но мне нужен тип базы данных MySQL, проблема в том, чтобы создать экземпляр DbContext указанного типа базы данных?

Конечно,Я знаю, что его также можно создать, указав connectionName, но строка подключения к базе данных зашифрована и ее необходимо расшифровать

Псевдокод выглядит следующим образом:

public partial class MyDbContext : DbContext
{
    static string mysqlConn = ReadConnectionString(); //Get the encrypted MySQL connection string

    public MyDbContext() : base(mysqlConn)
    {
        // Even if I want to modify the connection string in this way, nor will it throw a connection string malformed exception
        Database.Connection.ConnectionString = DecryptConnectionString(mysqlConn);
    }
}

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

К Серж Ш : Спасибо, что нашли время для изучения этой проблемы.Я видел решение, которое вы предоставили.При построении строки подключения последний метод по-прежнему:


Public DbContext(string nameOrConnectionString)

Как я уже говорил, этот метод возвращает тип базы данных SQLServer.Я настаиваю на том, что есть проблема с дизайном DbContext.Microsoft должна удалить этот метод и внедрить следующие группы методов:


//name of the connection string in the configuration file, Will automatically create a specific type of database connection based on the providerName of the configuration file
Public DbContext (string connectionName)</p>

<pre><code>
//connection string, the default returns SQLServer database type, namely: providerName = "System.Data.SqlClient"
Public DbContext (string connectionString)
// Строка подключения и имя поставщика данных Public DbContext (строка connectionString, строка providerName)

Если этов противном случае вы не можете избежать ловушки конструктора DbContext.

На самом деле, у меня уже есть план, который я не хочу использовать, прежде чем задавать этот вопрос: используйте обычную строку подключения к данным, не стесняйтесь заполнять параметры, читайте и заменяйте их фактическимстрока, которая была расшифрована и сохранена в другом месте.

0 голосов
/ 30 декабря 2018

Хорошо, это примерно то, что я ожидал, на некоторые мои вопросы можно ответить.

Хотя я не слишком знаком с EntityFramework, глядя на исходный код DbContext, я почти наверняка могу определить, что этоэто недостаток дизайна, ему не хватает такого конструктора:

<code>
Public DbContext(string connectionString, string providerName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...