Tag: ef migrations

4.3使用entity framework迁移时如何显式命名数据库

我最近开始使用entity framework迁移,并注意到,当我运行Update-Database命令时,数据库名称没有通过。 我的连接string是: <connectionStrings> <add name="DataContext" connectionString="Server=.\SQLEXPRESS;Initial Catalog=TestDB;Trusted_Connection=Yes;" providerName="System.Data.SqlClient" /> </connectionStrings> 我第一次运行Update-Database时,我的数据库是用正确的名称TestDB创build的。 但是,只要我对其中一个实体进行更改,除非我添加启动项目名称(我正在使用多项目解决scheme),否则不会再更新: Update-Database -StartUpProjectName "TestDB.Data" 然后这又创build了另一个新的数据库,这个迁移将会一直继续使用。 我不介意不得不放在StartUpProjectName命令,但有没有办法来覆盖这个数据库的默认名称? 它总是创build数据库为 TestDB.Data.DataContext 有没有办法确保在传递StartUpProject名称时创build的数据库只是称为TestDB,或者这是使用StartUpProjectName设置的限制吗? 作为一个说明,我认为我需要指定StartUpProjectName的原因是我有一个多层项目设置。 迁移configuration文件是在我的“数据”项目中,实体/模型在我的“域”项目等我也没有任何初始化我的Global.asax.cs文件中的选项,因为我以前会用先编码4.2。 所以在我的项目中,我只是在我的数据项目中有一个DataContext,在该项目中也有Migrationsconfiguration。 编辑: 由于我最初设置了这个问题,我偶然发现了在多项目解决scheme中命名数据库的“正确”方法。 虽然下面的答案将起作用,但这意味着你正在复制你的web.config在另一个不是理想解决scheme的领域。 相反,你可以通过做这样的事情把名字放到你的DbContext中(DataContext就是我在项目中使用的名字): public class DataContext : DbContext { public DataContext() : base("DatabaseNameHere") { } public DbSet<Table1> Table1 { get; set; } public DbSet<Table2> Table2 { get; set; } public […]

entity framework迁移重命名表和列

我重命名了一对夫妇实体及其导航属性,并在EF 5中生成了新的迁移。与EF迁移中的重命名一样,默认情况下,它将删除对象并重新创build它们。 这不是我想要的,所以我几乎不得不从头构build迁移文件。 public override void Up() { DropForeignKey("dbo.ReportSectionGroups", "Report_Id", "dbo.Reports"); DropForeignKey("dbo.ReportSections", "Group_Id", "dbo.ReportSectionGroups"); DropForeignKey("dbo.Editables", "Section_Id", "dbo.ReportSections"); DropIndex("dbo.ReportSectionGroups", new[] { "Report_Id" }); DropIndex("dbo.ReportSections", new[] { "Group_Id" }); DropIndex("dbo.Editables", new[] { "Section_Id" }); RenameTable("dbo.ReportSections", "dbo.ReportPages"); RenameTable("dbo.ReportSectionGroups", "dbo.ReportSections"); RenameColumn("dbo.ReportPages", "Group_Id", "Section_Id"); AddForeignKey("dbo.ReportSections", "Report_Id", "dbo.Reports", "Id"); AddForeignKey("dbo.ReportPages", "Section_Id", "dbo.ReportSections", "Id"); AddForeignKey("dbo.Editables", "Page_Id", "dbo.ReportPages", "Id"); CreateIndex("dbo.ReportSections", "Report_Id"); CreateIndex("dbo.ReportPages", "Section_Id"); […]

无法在entity framework中生成显式迁移

我正在添加一个新的迁移,但是这个消息显示: 无法生成显式迁移,因为以下显式迁移未决:[201203170856167_left]。 在尝试生成新的显式迁移之前应用待处理的显式迁移。 谁能帮我?

如何使用EF 4.3中的复杂键在AddOrUpdate中播种数据

我正尝试用一些testing数据来开发一个开发数据库。 我已经使用了context.People.AddOrUpdate(p => p.Id, people)); 取得很大的成功。 我有另外一张桌子,我需要种子,其中我不知道主键。 例如,我想要基于First和Last名称匹配的AddOrUpdate。 我不确定如何正确写入expression式。 context.People.AddOrUpdate(p => p.FirstName && p.LastName, people); 显然是不正确的,但我希望它传达了我正在寻找的解决scheme。

EF迁移:回滚上次应用的迁移?

这看起来像一个非常常见的任务,但我找不到一个简单的方法来做到这一点。 我想撤消上次应用的迁移。 我会期待一个简单的命令,比如 PM> Update-Database -TargetMigration:"-1" 相反,我所能想到的是: PM> Get-Migrations Retrieving migrations that have been applied to the target database. 201208012131302_Add-SystemCategory 201207311827468_CategoryIdIsLong 201207232247409_AutomaticMigration 201207211340509_AutomaticMigration 201207200025294_InitialCreate PM> Update-Database -TargetMigration:"CategoryIdIsLong" (至less我可以使用名字,跳过时间戳…) 有更容易的方法吗?

MVC 5种子用户和angular色

我一直在玩新的MVC 5,我有几个模型,控制器和视图设置使用代码第一次迁移。 我的问题是如何种子用户和angular色? 我目前在Configuration.cs的种子方法中种下一些参考数据。 但是,在我看来,用户和angular色表不会创build,直到第一次触及AccountController。 我目前有两个连接string,所以我可以将我的数据从我的身份validation分为不同的数据库。 我怎么能得到用户,angular色等表填充与我的其他人? 而不是当帐户控制器被击中?

EF中的GUID COMB策略

使用CodeFirstdevise,有没有办法在新的entity framework4.1中为对象实现Guid COMB标识策略? 我认为设置StoreGeneratedPattern会工作,但它仍然给我正常的GUID。

MVC3和Code First Migrations – 自从创build数据库以来,支持“blah”上下文的模型已经发生了变化“

我使用Entity Framework Code First开始了我的项目。 当我准备好时,我将我的数据库和代码上传到我的主机提供商。 一切正常。 我需要添加一个新的字段到我的一个类,我不想松散数据库中的数据。 因此,我尝试了一些关于使用Code First Migrations的博客post。 我做了以下几点: 我备份了我的远程(生产)数据库。 我在本地附加这个数据库 我将该属性添加到我的课程中 PM>启用迁移 PM> Add-Migration AddSortOrderToCar PM>更新 – 数据库 在这一点上,我创build了本地数据库的.bak文件,然后使用该文件“恢复”到远程的。 最后,我将代码发布到远程站点。 当我访问该网站时,我收到以下错误消息:自从创build数据库以来,支持“blahblah”上下文的模型已经发生了变化。 考虑使用Code First Migrations来更新数据库。 我究竟做错了什么?