如何在Code First中指定数据库名称?

我如何告诉EF如何命名数据库以及将其放在哪里?

如果Web.Config中没有连接string,它会尝试将其放入本地SQLEXPRESS服务器,但是我想将它放在已知的SQL Server上,并将其命名为我想要的名称。 有什么build议么?

在app.config / web.config中创build一个与上下文同名的连接string,EF将使用该DB。

如何与EF使用不同的连接string名称

EF将在连接string中使用数据库的名称。 当你想从EF中分离连接string的名字时,你需要提供你的连接string给构造函数。 例:

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

在class上 :

 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构造函数中设置名称。

如果您将连接string指向现有数据库,则EF“代码优先”不会自动尝试创build一个。

EF“代码优先”使用一个约定,其中上下文类默认查找与上下文类具有相同名称的连接string。

先使用ef代码和现有的数据库

正如已经提到的,你可以在你的应用程序的configuration文件中声明你的连接string(比如说“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..... } } 

作为参考,这里是如何在代码中使用VB.NET来做到这一点:

 Public Class DatabaseContext : Inherits DbContext Public Property Users As DbSet(Of User) Public Sub New() MyBase.New("NewFileName.sdf") End Sub 

末class