我想用 EF 创建一个新的 MVC 项目以使用数据库优先方法。
因此,我使用创建默认帐户和管理用户模型、控制器和视图的向导在 Visual Studio 2015 中创建了一个新的 MVC 5.2.3 项目。
连接字符串是
Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\aspnet-MyProject-20161112112119.mdf;Initial Catalog=aspnet-MyProject-20161112112119;Integrated Security=True" providerName="System.Data.SqlClient
我在这里有几个问题:
我的项目文件夹中没有 mdf 文件
App_Data
,所以我不知道数据库到底去了哪里。我猜该应用程序默认使用代码优先方法,所以显然我想更改它。一个想法是从设置时创建的内部项目 db 中复制表并将它们添加到我将用于 db first 方法的新数据库中。但我找不到现有的应用程序数据库(见第 1 点)。
我可以通过 Management Studio 连接到上面 ( ) 中的 connstring 中使用的服务器,
(LocalDb)\MSSQLLocalDB
但它根本没有数据库,甚至没有 conn 字符串中提到的数据库。并且该文件不在App_Data
文件夹中MyProjectDb
因此,我使用 Sql Server Management Studio在我的服务器中创建了一个全新的数据库localhost
,旨在将其用于 db first 方法。我在我的解决方案中创建了一个新项目
MyProject.Database
来使用新创建的数据库MyProjectDb
。我检查并可以看到
MyProject.Database
项目属性中的数据库字符串具有 connstring 数据源(LocalDb)/ProjectsV13
而不是localhost
. 问题是为什么这样奇怪的来源而不是我的localhost
?以及如何强制新的数据库项目在localhost
服务器内创建数据库?接下来,我修改了数据库项目(调试选项卡)的属性,以在连接字符串中用作数据源和我创建
localhost
的新数据库。MyProjectDb
现在我右键单击我的数据库项目
MyProject.Database
:添加 > 新项目 > 表。我创建了表格。我现在可以在
Projects-MyProject
文件夹下的 SQL Server 对象资源管理器中看到数据库,也可以在 SQL Server Management Studio中看到MyProjectDb
我在服务器下创建的数据库。localhost
前者有我创建的表格,后者没有它在表格下(我当然刷新了表格)。这很奇怪,我很困惑它们实际上是相同的数据库还是以某种方式 VS 复制了数据库而不是使用我创建的数据库?我在解决方案资源管理器中右键单击我的 Web 项目:添加 > 新项目 > 数据 > ADO.NET 实体数据模型,我给出名称,在下一个屏幕上我正在选择
EF Designer from database
选项。我单击下一步并进入我可以创建的屏幕New connection
。我点击了这个,我可以从列表中选择的唯一服务器是NICKO-PC
服务器。(请记住:我在 VS 中创建的 db 项目默认为(LocalDb)?ProjectsV13
服务器)如果我尝试插入localhost
或其他任何它确实更改回的内容,但我想当我扩展可用数据库时NICKO-PC
它与服务器 cos 相同,我的数据库在列表中。所以我选择它并下一步。localhost
MyProjectDb
我得到
Choose Your Database Objects And Settings
屏幕。现在我看不到我使用我的MyProject.Database
项目创建的表。没有表可以选择更精确。所以很明显我不能创建任何数据库实体在我的应用程序中使用。
我被困住了。
我希望我对事件的描述不会令人困惑。
任何聪明的人都可以帮我做我想做的事吗?
我不知道为什么 web 项目在一些奇怪的
(LocalDb)\MSSQLLocalDB
服务器上使用 db 文件,而数据库项目在下面创建它(LocalDb)/ProjectsV13
?如何创建自己的新数据库并将其用于 Web 应用程序和数据库项目,然后基于 db first 方法创建实体?
如何在数据实体向导中获取表和其他对象我想在我的应用程序中创建模型实体?
这基本上是我需要的。
请让我知道您是如何使用 Db First 方法创建项目的,因为我无法使用 VS 工作室向导。
谢谢
* 编辑 *
我的 DbContext 类相当简单,由我与用户模型一起安装的 MVC 项目创建:
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
}
它指向默认的 conn 字符串,您可以看到我更改为连接到我新创建的 db MyProjectDb
。