EFにデータベースの名前と配置場所を伝えるにはどうすればよいですか?
Web.Configに接続文字列がない場合、ローカルSQLEXPRESSサーバーに接続文字列を配置しようとしますが、既知のSQLサーバーに接続文字列を配置して、必要な名前を付けたいと思います。助言がありますか?
App.config/web.configにコンテキストと同じ名前で接続文字列を作成すると、EFはそのDBを使用します。
EFは、接続文字列でデータベースの名前を使用します。接続文字列の名前をEFから分離する場合、コンストラクターに接続文字列を提供する必要があります。例:
public class DatabaseContext : DbContext
{
public DatabaseContext()
: base(ApplicationParameters.ConnectionStringName)
{
}
public DatabaseContext(string connectionStringName)
: base(connectionStringName)
{
}
}
クラスで :
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/
または、DbContextコンストラクターで名前を設定できます。
すでに述べたように、アプリケーションの設定ファイル内で接続文字列を名前(たとえば "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.....
}
}
接続文字列を既存のデータベースに向けると、EF「コードファースト」は自動的に接続文字列を作成しようとしません。
EFの「コードファースト」は、デフォルトでコンテキストクラスがコンテキストクラスと同じ名前の接続文字列を探すという規則を使用しています。
参考までに、VB.NETを使用してコードでそれを行う方法を次に示します。
Public Class DatabaseContext : Inherits DbContext
Public Property Users As DbSet(Of User)
Public Sub New()
MyBase.New("NewFileName.sdf")
End Sub
終了クラス