Подтвердить что ты не робот

Entity Framework UnintentionalCodeFirstException

У меня есть проект MVC 4, который создал и сгенерировал все классы модели, используя Entity Framework. Затем я добавил класс и назвал его таким же, как класс "MyProjectEntities", и сделал его частичным, чтобы добавить персонализированные методы в этот класс. Я добавил множество методов для запроса базы данных в этом классе, и он отлично работает. Когда я вызываю эти методы, я получаю UnintentionalCodeFirstException. Я не уверен, что я сделал неправильно?

4b9b3361

Ответ 1

Вам нужно указать правильную строку подключения. Не только обычные строки типа "Источник данных =".

У вас будет строка подключения, которая начинается с "metadata =" в вашем файле конфигурации, используйте ее.

Ответ 2

Вы также можете преобразовать простую строку соединения в строку подключения к базе данных:

public static string BuildEntityConnectionStringFromAppSettings(string nameOfConnectionString)
{
    var shortConnectionString = GetConnectionStringByName(nameOfConnectionString);

    // Specify the provider name, server and database. 
    string providerName = "System.Data.SqlClient";

    // Initialize the connection string builder for the 
    // underlying provider taking the short connection string.
    SqlConnectionStringBuilder sqlBuilder =
        new SqlConnectionStringBuilder(shortConnectionString);

    // Set the properties for the data source.
    sqlBuilder.IntegratedSecurity = false;

    // Build the SqlConnection connection string. 
    string providerString = sqlBuilder.ToString();

    // Initialize the EntityConnectionStringBuilder.
    EntityConnectionStringBuilder entityBuilder =
        new EntityConnectionStringBuilder();

    //Set the provider name.
    entityBuilder.Provider = providerName;

    // Set the provider-specific connection string.
    entityBuilder.ProviderConnectionString = providerString;

    // Set the Metadata location.
    entityBuilder.Metadata = String.Format("res://*/Application.{0}.Data.Model.{0}Model.csdl|res://*/Application.{0}.Data.Model.{0}Model.ssdl|res://*/Application.{0}.Data.Model.{0}Model.msl", nameOfConnectionString);
    return entityBuilder.ToString();
}

Фон: в моем проекте было много строк подключения, и мы хотели сохранить их простыми и сопоставимыми.