web-dev-qa-db-ja.com

Code Firstでデータベース名を指定する方法は?

EFにデータベースの名前と配置場所を伝えるにはどうすればよいですか?

Web.Configに接続文字列がない場合、ローカルSQLEXPRESSサーバーに接続文字列を配置しようとしますが、既知のSQLサーバーに接続文字列を配置して、必要な名前を付けたいと思います。助言がありますか?

53
Sam

App.config/web.configにコンテキストと同じ名前で接続文字列を作成すると、EFはそのDBを使用します。

56
amit_g

EFで別の接続文字列名を使用する方法

EFは、接続文字列でデータベースの名前を使用します。接続文字列の名前をEFから分離する場合、コンストラクターに接続文字列を提供する必要があります。例:

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

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

}
23
ferventcoder

クラスで :

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/

17
Amin Ghaderi

または、DbContextコンストラクターで名前を設定できます。

7
carlsb3rg

すでに述べたように、アプリケーションの設定ファイル内で接続文字列を名前(たとえば "YourDBName")で宣言し、これに渡すことができます。 DbContextベースコンストラクター呼び出し(完全な回答を提供するためにこれを回答に追加します-これについては既にすばらしい回答が提供されています)。

または、Database.Connection.ConnectionStringプロパティを使用して、DbContext拡張クラスでこれをプログラムで設定できます。例えば:

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.....
    }
}
3

接続文字列を既存のデータベースに向けると、EF「コードファースト」は自動的に接続文字列を作成しようとしません。

EFの「コードファースト」は、デフォルトでコンテキストクラスがコンテキストクラスと同じ名前の接続文字列を探すという規則を使用しています。

既存のデータベースで最初にefコードを使用

1
Daniel Little

参考までに、VB.NETを使用してコードでそれを行う方法を次に示します。

Public Class DatabaseContext : Inherits DbContext

Public Property Users As DbSet(Of User)

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

終了クラス

0
M Granja