如何在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