.mdf文件上的实体框架
本文关键字:实体 框架 文件 mdf | 更新日期: 2023-09-27 18:25:37
我现在正在做一些项目,必须使用本地数据库。因此,我创建了一个新的基于服务的数据库(无表atm)。然后我想添加实体框架支持。
因为我以前从未使用过实体框架,所以我指的是那个链接:http://msdn.microsoft.com/en-us/data/jj200620.aspx.
一切都还可以,但这里变得复杂了。我创建了包含DbSet
的DataContext
类。但是,当我运行单元测试时,表是在Localdb上创建的(不在.mdf
文件中)。
该怎么办?
我很确定,我确实选择了正确使用哪个数据库(实际上已经做了3次),但数据表仍然是在LocalDb上创建的。我在这里做错了什么?
我完全是初学者(只使用ORM学说)。否则我可以插入数据和所有数据,它只是在错误的数据库上。
在EF中进行代码优先开发时,可以强制EF只考虑一个连接字符串名称。
EF数据上下文父类上的一个构造函数(其中有相当多的重载)采用一个简单的字符串。
此字符串是应用程序或Web配置中要使用的连接字符串的名称。
你打这样的电话:
using System.Data.Entity;
namespace MSSQL_EFCF.Classes
{
public class DataAccess : DbContext
{
public DataAccess() : base("myConnectionString")
{}
public DbSet<MyTableObject> MyObjects { get; set; }
}
}
您仍然可以将自己启动所需的任何代码(如DB Initializer调用)放入构造函数中,所有这些都将在基本调用完成后调用。
这样做的好处迫使实体框架始终使用命名的连接字符串,而不使用其他任何东西。
这吸引了许多开发人员,以及为什么它运行在一个使用localdb的环境中,似乎很简单。
Entity Framework DbContext默认情况下将使用数据上下文派生类的名称作为数据库名称,如果它在任何配置文件中都找不到合适的连接字符串,则会假设您在没有完整支持数据存储的开发模式下工作。
在我上面的例子中,EF会检查App和/或Web.config中名为"myConnectionString"的连接字符串
一旦它做出了这个开发决定,它就知道localdb将在visualstudio的最新版本中安装时出现,因此它将自动寻找一个连接,并用一个数据库填充它,该数据库遵循它所使用的上下文的名称。
我之前写过一篇关于这个主题的博客文章,你可以在这里找到:
http://www.codeguru.com/columns/dotnet/entity-framework-code-first-simplicity.htm
注意:以上适用于使用EF连接的任何数据库,它是决定实际数据存储位置的连接字符串。