.mdf文件上的entity framework

我正在做一些项目,我必须使用本地数据库。 所以,我创建了一个新的基于服务的数据库(没有表atm)。 然后我想添加entity framework支持。

因为我以前从未使用过Entity Framework,所以我指的是那个链接: http : //msdn.microsoft.com/en-us/data/jj200620.aspx 。

一切都很好,但这里变得复杂了。 我在其中创建了带有DbSet DataContext类。 但是,当我运行我的unit testing时,表是在Localdb上创建的(不在我的.mdf文件中)。

该怎么办?

我很确定,我确实选择了正确使用哪个数据库(实际上已经执行了3次),但仍然在LocalDb上创建了数据表。 我在这做错了什么?

我是初学者(仅使用教义ORM)。 否则我可以插入数据和所有,它只是在错误的数据库上。

当您在EF中进行代码首次开发时,可以强制EF仅考虑一个连接字符串名称。

EF数据上下文父类中的一个构造函数(其中存在相当多的重载)采用简单的字符串。

此字符串被指定为要使用的App或Web配置中的连接字符串的名称。

你打电话是这样的:

 using System.Data.Entity; namespace MSSQL_EFCF.Classes { public class DataAccess : DbContext { public DataAccess() : base("myConnectionString") {} public DbSet MyObjects { get; set; } } } 

您仍然可以在构造函数中放置自己启动所需的任何代码(例如DB Initializer调用),并在基本调用完成后调用所有代码。

以这种方式执行操作的优点迫使entity framework始终使用命名连接字符串,而不是其他任何东西。

这会吸引许多开发人员,以及为什么它运行使用localdb的原因看似简单。

默认情况下,entity frameworkDbContext将使用数据上下文派生类的名称作为数据库名称,如果它无法通过该名称在任何配置文件中找到合适的连接字符串,则假设您在开发模式下工作而没有完整的后备数据存储。

在上面的示例中,EF将检查App和/或Web.config以获取名为“myConnectionString”的连接字符串

一旦做出这个开发决定,它就知道localdb将会出现,因为它安装了最新版本的visual studio,因此它会自动寻找一个连接并用一个db来填充它,该db遵循上下文的名称。它被使用了。

我之前写了一篇关于这个主题的博客文章,你可以在这里找到:

http://www.codeguru.com/columns/dotnet/entity-framework-code-first-simplicity.htm

注意:以上内容适用于使用EF连接的任何数据库,它是决定实际数据存储的内容/位置的连接字符串。