我的 MVC 5 代码优先数据库在哪里创建? (不使用 AttachDbFilename)

Posted

技术标签:

【中文标题】我的 MVC 5 代码优先数据库在哪里创建? (不使用 AttachDbFilename)【英文标题】:Where is my MVC 5 code-first database created? (not using AttachDbFilename) 【发布时间】:2015-09-14 18:53:13 【问题描述】:

我的 MVC 5 weApp 中有以下连接字符串:

<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;User Instance=True;Initial Catalog=MatWebDB;Integrated Security=True" providerName="System.Data.SqlClient" />

我使用实体框架代码优先和身份 2 进行表单身份验证。

Evreything 似乎工作正常:我注册了一个新用户并正确登录。 问题是我找不到创建的数据库;在我的 SQL Server Management Studio 中,没有创建“MatWebDB”数据库。

我想要做的是为我自己的 POCO 实体对象使用由 Identity 2 身份验证自动生成的相同数据库。并且知道它是在哪里创建的。

谢谢!

【问题讨论】:

您是否连接到 SSMS 中的 .\SQLEXPRESS? 【参考方案1】:

组合它们的最简单方法是让您的应用程序上下文从身份上下文继承并在那里设置连接字符串:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

    static ApplicationDbContext()
    
        // Set the database intializer which is run once during application start
        // Use an initializer that will create the database, or create it in SSMS first
        Database.SetInitializer(new CreateDatabaseIfNotExists<ApplicationDbContext>());
    

    // Your identity and application tables will be created in the database this connect string points to
    public ApplicationDbContext()
        : base("DefaultConnection", false)
        

    // define your POCOs here
    public virtual DbSet<Foo1> Foo1s  get; set; 
    public virtual DbSet<Foo2> Foo2s  get; set; 
    .. etc


【讨论】:

【参考方案2】:

非常简单。在你的Web.config

<configuration>
    <connectionStrings>

先使用代码和Sqlserver:

如果你有一个本地数据库,你可以使用这样的连接字符串:

 <add name="DefaultConnection1" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;
    AttachDbFilename=|DataDirectory|\aspnet-WebApplicationMVC-xxxx.mdf;
    Initial Catalog=aspnet-WebApplicationMVC-xxxxx;Integrated Security=True" 
    providerName="System.Data.SqlClient" />

在 Visual Studio 中查看数据库:

如果您的数据库托管在在线服务器上:

<add name="DefaultConnection" providerName="System.Data.SqlClient" 
    connectionString="Data Source=SQLxxxxx;integrated security=false;
    Initial Catalog=DB_9D914B_kermit;User Id=DBxxxxx;Password=xxxx;
    Trusted_Connection=false;TrustServerCertificate=false;Encrypt=False;
    MultipleActiveResultSets=True" />

在 SQL Server Management Studio 中查看数据库:

连接字符串的安全属性可以根据您的需要而变化。

【讨论】:

【参考方案3】:

第 1 步: 在解决方案资源管理器中,首先有一个名为“App_Data”的默认文件夹,点击选中该文件夹即可。

第 2 步: 现在单击上面的菜单栏图标,即“全部显示”,如下图所示。

您会在那里找到您的数据库,只需双击数据库文件,即可编辑或添加新表。

【讨论】:

以上是关于我的 MVC 5 代码优先数据库在哪里创建? (不使用 AttachDbFilename)的主要内容,如果未能解决你的问题,请参考以下文章

MVC 3 代码优先应用的数据

MVC 代码优先 - 数据库未生成

无法将数据添加到数据库 MVC 5 代码优先方法

MVC3 代码优先 - EF4.1 不会自动创建表(使用 MySQL 和 Connector/Net 6.3.6。)

[转]ASP.NET MVC 5 - 添加一个模型

ASP.NET MVC3 和实体框架代码优先架构