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

Как указать имя базы данных в Code First?

Как сообщить EF, что назвать базу данных и где ее поместить?

Если в Web.Config нет строки подключения, она пытается поместить ее на локальный сервер SQLEXPRESS, но я хочу поместить ее на известный SQL-сервер и называть ее тем, что я хочу. Любые предложения?

4b9b3361

Ответ 1

Создайте строку подключения в app.config/web.config с тем же именем, что и контекст, и EF будет использовать эту БД.

Ответ 2

Как использовать другое имя строки подключения с EF

EF будет использовать имя базы данных в строке подключения. Если вы хотите отделить имя своей строки подключения от EF, вам необходимо указать строку подключения для конструктора. Пример:

public class DatabaseContext : DbContext
{
    public DatabaseContext() 
      : base(ApplicationParameters.ConnectionStringName)
    {
    }

    public DatabaseContext(string connectionStringName)
      : base(connectionStringName)
    {
    }

}

Ответ 3

в классе:

public class Context : DbContext
{
    //SET CONNECTION STRING NAME FOR DataBase Name :
    public Context() : base("YourConnectionName") { }

    public DbSet<Category> Categories { get; set; }
    public DbSet<Product> Products { get; set; }
}

в web.config:

<connectionStrings>  
    <add name="YourConnectionName" connectionString="Data Source=A-PC\SQLEXPRESS;
    Initial Catalog=MyDataBase; Integrated Security=True" 
    providerName="System.Data.SqlClient" />
</connectionStrings>  

Спасибо ferventcoder.
Ref = > http://brandonclapp.com/connection-strings-with-entity-framework-5-code-first/

Ответ 4

В качестве альтернативы вы можете установить имя в своем конструкторе DbContext.

Ответ 5

Если вы укажете свою строку соединения в существующей базе данных, тогда EF "code first" не будет пытаться создать ее автоматически.

EF "code first" использует соглашение, в котором классы контекста по умолчанию ищут строку соединения, которая имеет то же имя, что и класс контекста.

Использование ef-кода сначала с существующей базой данных

Ответ 6

Как уже упоминалось, вы можете объявить свою строку соединения внутри файла конфигурации вашего приложения с именем (например, "YourDBName" ), а затем передать это вызову базового конструктора DbContext (я добавлю это в ответ за предоставление полного ответа - большие ответы, уже даваемые на этом).

В качестве альтернативы вы можете установить это программно в своем классе DbContext Extension, используя свойство Database.Connection.ConnectionString. Например:

App.config:

<!-- More.... -->
<!-- You can do this in a declarative way -->
<connectionStrings>
  <add name="YourDBName"
       connectionString="<Your connection string here>"
       providerName="<Your provider here>" />
</connectionStrings>
<!-- More.... -->

DatabaseContext.cs:

public class DatabaseContext : DbContext
    //Link it with your config file
    public DatabaseContext () : base("YourDBName") 
    {
        //And/Or you can do this programmatically.
        this.Database.Connection.ConnectionString = "<Your Connection String Here>";
        // More Stuff.....
    }
}

Ответ 7

Для справки, вот как это сделать в коде с помощью VB.NET:

Public Class DatabaseContext : Inherits DbContext

Public Property Users As DbSet(Of User)

Public Sub New()
    MyBase.New("NewFileName.sdf")
End Sub

Конечный класс