- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在我的网站上使用基于 Entity Framework 代码的迁移。我目前有一个包含多个项目的解决方案。有一个我想初始化数据库的 Web API 项目和另一个名为 DataLayer 项目的项目。我已经在 DataLayer 项目中启用了迁移,并创建了一个初始迁移,如果它不存在,我希望将其用于创建数据库。
这是我启用迁移时得到的配置
public sealed class Configuration : DbMigrationsConfiguration<Harris.ResidentPortal.DataLayer.ResidentPortalContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
}
protected override void Seed(Harris.ResidentPortal.DataLayer.ResidentPortalContext context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" },
// new Person { FullName = "Brice Lambson" },
// new Person { FullName = "Rowan Miller" }
// );
//
}
}
我在创建它后对其所做的唯一更改是将其从内部更改为公共(public),以便 WebAPI 可以看到它并在它的数据库初始化程序中使用它。下面是我用来尝试初始化数据库的 Application_Start 中的代码中的代码
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ResidentPortalContext, Configuration>());
new ResidentPortalUnitOfWork().Context.Users.ToList();
如果我不管数据库是否存在都运行它,我会收到以下错误
Directory lookup for the file "C:\Users\Dave\Documents\Visual Studio 2012\Projects\ResidentPortal\Harris.ResidentPortal.WebApi\App_Data\Harris.ResidentPortal.DataLayer.ResidentPortalContext.mdf" failed with the operating system error 2(The system cannot find the file specified.).
CREATE DATABASE failed. Some file names listed could not be created. Check related errors.
Database.SetInitializer(new DropCreateDatabaseAlways<ResidentPortalContext>());
new ResidentPortalUnitOfWork().Context.Users.ToList();
数据库将在需要的地方正确创建。
最佳答案
我已经想出了如何为这个过程创建一个动态连接字符串。您需要先将此行添加到 Web 或 App.Config 上的 EntityFramework 条目中,而不是默认放置在那里的行。
<defaultConnectionFactory type="<Namespace>.<ConnectionStringFacotry>, <Assembly>"/>
public sealed class ResidentPortalConnectionStringFactory: IDbConnectionFactory
{
public DbConnection CreateConnection(string nameOrConnectionString)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConfigurationManager.ConnectionStrings["PortalDatabase"].ConnectionString);
//save off the original catalog
string originalCatalog = builder.InitialCatalog;
//we're going to connect to the master db in case the database doesn't exist yet
builder.InitialCatalog = "master";
string masterConnectionString = builder.ToString();
//attempt to connect to the master db on the source specified in the config file
using (SqlConnection conn = new SqlConnection(masterConnectionString))
{
try
{
conn.Open();
}
catch
{
//if we can't connect, then append on \SQLEXPRESS to the data source
builder.DataSource = builder.DataSource + "\\SQLEXPRESS";
}
finally
{
conn.Close();
}
}
//set the connection string back to the original database instead of the master db
builder.InitialCatalog = originalCatalog;
DbConnection temp = SqlClientFactory.Instance.CreateConnection();
temp.ConnectionString = builder.ToString();
return temp;
}
}
Database.SetInitializer(new MigrateDatabaseToLatestVersion<ResidentPortalContext, Configuration>());
using (ResidentPortalUnitOfWork temp = new ResidentPortalUnitOfWork())
{
temp.Context.Database.Initialize(true);
}
关于entity-framework - Entity Framework MigrateDatabaseToLatestVersion 给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15980209/
如果数据库不存在,我正在尝试使用 EF 代码优先迁移来构建数据库。到目前为止,我已成功Enabled-Migrations。我还使用 Add-Migrations 进行了构建数据库的初始迁移。该脚本在
我不明白为什么我的最新迁移没有在应用程序启动时(或至少在第一次访问数据库上下文时)自动执行。我曾经在开发中手动运行update-database,但我想测试它是否会在我的托管测试环境中自动升级。 在A
我正在尝试自动生成我的数据库(如果它不存在)并运行 Seed() 方法来填充数据。在我的数据库上下文构造函数中,我有这个: Database.SetInitializer(new MigrateDat
我正在尝试在我的网站上使用基于 Entity Framework 代码的迁移。我目前有一个包含多个项目的解决方案。有一个我想初始化数据库的 Web API 项目和另一个名为 DataLayer 项目的
我正在尝试部署一个使用 EF5 codefist 和迁移构建的 MVC4 应用程序。 我希望应用程序在将来使用新迁移部署应用程序的新版本时更新数据库,因此在 Global.asax 中我这样做: Da
我最近遇到的事情。 我有一个动态生成连接字符串的项目,我正在尝试在包装这些字符串的上下文中使用 MigrateDatabaseToLatestVersion。每次我这样做时,我都会看到我的动态数据库没
我需要帮助来阐明 EF Code First Migrations 如何在生产机器上运行。我有一些实体类和 DbContext 派生类来访问实体。现在,我想执行以下几项操作: 当我的应用程序启动时,它
在我的项目中尝试实现 EF 迁移时,我被困在一个地方。 EF Code First MigrateDatabaseToLatestVersion 接受来自配置的连接字符串名称。 在我的例子中,数据库名
我的问题:执行 MigrateDatabaseToLatestVersion 初始化所需的(服务器和数据库)权限是什么? 问题背景: 我有一个 Azure SQL 数据库和一个连接到它的 Azure
我是一名优秀的程序员,十分优秀!