如何告诉EF如何命名数据库以及将数据库放在何处?
如果Web.Config中没有连接字符串,它会尝试将其放在本地SQLEXPRESS服务器中,但我想将它放在已知的SQL Server上,并将其命名为我想要的。有什么建议吗?
答案 0 :(得分:55)
在app.config / web.config中创建一个连接字符串,其名称与上下文相同,EF将使用该数据库。
答案 1 :(得分:23)
EF将在连接字符串中使用数据库的名称。如果要将连接字符串的名称与EF分离,则需要将连接字符串提供给构造函数。例如:
public class DatabaseContext : DbContext
{
public DatabaseContext()
: base(ApplicationParameters.ConnectionStringName)
{
}
public DatabaseContext(string connectionStringName)
: base(connectionStringName)
{
}
}
答案 2 :(得分:17)
在课堂上:
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 =&gt; http://brandonclapp.com/connection-strings-with-entity-framework-5-code-first/
答案 3 :(得分:7)
或者,您可以在DbContext构造函数中设置名称。
答案 4 :(得分:3)
如前所述,您可以使用名称(例如“YourDBName”)在应用程序的配置文件中声明连接字符串,然后将其传递给DbContext
基础构造函数打电话(我会将其添加到答案中以提供完整的答案 - 已经给出了很好的答案)。
或者,您可以使用DbContext
属性在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.....
}
}
答案 5 :(得分:1)
如果您将连接字符串指向现有数据库,那么EF“code first”将不会尝试自动创建一个。
EF“code first”使用一种约定,其中默认情况下,上下文类会查找与上下文类同名的连接字符串。
答案 6 :(得分:0)
供参考,以下是如何使用VB.NET在代码中执行此操作:
Public Class DatabaseContext : Inherits DbContext
Public Property Users As DbSet(Of User)
Public Sub New()
MyBase.New("NewFileName.sdf")
End Sub
结束班