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

时间:2011-03-18 00:52:02

标签: entity-framework-4 ef-code-first

如何告诉EF如何命名数据库以及将数据库放在何处?

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

7 个答案:

答案 0 :(得分:55)

在app.config / web.config中创建一个连接字符串,其名称与上下文相同,EF将使用该数据库。

答案 1 :(得分:23)

如何使用EF

的其他连接字符串名称

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”使用一种约定,其中默认情况下,上下文类会查找与上下文类同名的连接字符串。

Using ef code first with an existing database

答案 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

结束班