到目前为止,我一直在使用Code-First Migrations Beta,当我通过Package Manager控制台迁移数据库时,我能够指定-TargetDatabase,以指示我希望迁移应用到哪个数据库,如下所示:
Update-Database -TargetDatabase:"MyLiveDatabase"
Run Code Online (Sandbox Code Playgroud)
由于迁移现在包含在Entity Framework 4.3中,我更新了我的应用程序以使用EF 4.3,但现在我不能再设置-TargetDatabase标志了.在程序包管理器控制台中运行时,出现以下错误:
A parameter cannot be found that matches parameter name 'TargetDatabase'
Run Code Online (Sandbox Code Playgroud)
我阅读了有关EF 4.3迁移的博客文章,但找不到有关它的任何信息.我还注意到一个旧的SO问题的评论,说该标志应该是-Target代替-TargetDatabase,但这似乎也不起作用.该-Target标志似乎用于指定我要迁移到哪个迁移.
-TargetDatabase标志是否已重命名,或者如何指定要将迁移应用于哪个数据库?
我认为对于有经验的程序员来说这应该是简单的但是在这里.我首先使用实体框架代码开发项目.我还启用了迁移并设置为auto(可爱功能).
我愚蠢地在我的实体类中声明了一个数据类型错误,现在我意识到它不适用于我试图做的事情.必须是自动完成功能.但无论如何,该字段可以为空,现在我已将其更改为我想要的,它已将字段设置为"not null".
本来: public virtual Byte[] ImageData { get; set; }
变成: public virtual byte ImageData { get; set; }
现在我已经改变并构建了解决方案,update-database -force将无法正常工作并抛出错误:
Cannot insert the value NULL into column 'ImageData', column does not allow nulls. UPDATE fails. The statement has been terminated.
Run Code Online (Sandbox Code Playgroud)
是否有可用于将此字段设置为可空的数据注释?
例如: [DataType(DataType.Upload)]
我在这里看了很长时间,似乎无法找到我想要的东西.
c# entity-framework asp.net-mvc-4 ef-migrations visual-studio-2012
我已经在我的实体框架项目上启用了代码优先迁移,并添加了一些迁移,这些迁移执行重命名表等操作.但是,我现在已经删除了数据库并导致实体框架根据我的最新数据模型生成一个全新的数据库.如果我尝试运行:
PM> Add-Migration TestMigration
Run Code Online (Sandbox Code Playgroud)
...它告诉我,我需要先应用现有的迁移.所以我跑:
PM> Update-Database
Run Code Online (Sandbox Code Playgroud)
...但问题是它正在尝试更新不需要更新的数据库; 它已经基于最新的数据模型.因此,当我尝试重命名现在不存在的表时,我收到错误.
我是否可以通过某种方式向数据迁移指出我的数据库是最新的并且不需要在其上运行任何迁移?我该怎么办?
sql-server data-migration entity-framework ef-code-first ef-migrations
我已经反向设计了一个小型数据库,它首先包含许多表和视图到EF 5代码中.
当我这样做时,我为每个表获取了一组模型和映射类,当我尝试使用生成的查询数据库时,这些类很有效DbContext.
它还为我的每个视图生成POCO类,但是当我运行Enable-Migrations并Add-Migration使用Package Manager控制台时,迁移不会重新创建SQL Server视图.
我尝试手动更新迁移以使用自定义SQL创建视图,如下所示:
Sql("CREATE VIEW [dbo].[viewUsersDeactivated] "
+ "AS "
+ "SELECT ... ");
Run Code Online (Sandbox Code Playgroud)
这在运行时工作正常Update-Database,但从Update-Database -Script命令输出的SQL脚本似乎无效,导致以下错误:
'CREATE VIEW'必须是批次中唯一的声明.
Sql("GO");在每个自定义SQL语句之间插入适用于脚本生成,但随后我无法再使用Update-Database,我找不到适合两者的方法.
所以我的问题归结为:如何在代码第一个迁移脚本中包含SQL Server视图,这样我就可以使用Update-Database生成的脚本和使用生成的脚本来创建数据库Update-Database -Script?
谢谢!
假设我们有Web应用程序的体系结构模型,其中每个帐户有1个数据库.这些帐户的数据库结构相同,仅与in中的数据不同.如何在代码优先模型中配置迁移.
entity-framework code-first ef-code-first ef-migrations entity-framework-6
我正在使用代码优先迁移来为我的asp mvc站点创建和更新数据库.
我有一个DbContext,它位于解决方案的另一个项目中.
public class EFDbContext : DbContext
{
public DbSet<Book> Books { get; set; }
public DbSet<Author> Authors { get; set; }
public DbSet<Publisher> Publishers { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我启用迁移和添加迁移[名称]时.它似乎创建了自己的db
[foo-projectname].Domain.Concrete.EFDbContext
Run Code Online (Sandbox Code Playgroud)
而不是附加到我创建的数据库,称为[foo-projectname].在站点的webconfig中,连接字符串通过目录" [foo-projectname] " 引用.
如果我将webconfig更改为其他数据库,那么我将从已添加到该数据库的项目中获取结果.但是,我想使用我创建的数据库.
我不想坚持使用这个自动创建的原因是因为我不确定迁移到SqlServer并且不想再陷入困境.我也得到了错误
支持'EFDbContext'上下文的模型自...以来发生了变化
即使我没有改变任何东西.
带有Repository的VS2013 WebAPI 2.x突然开始寻找在数据库实例上发生的数据迁移,而不是过去3个月以来的数据库实例--EF版本6
我有SQL Server 2012(v11.0.2218.0)作为ron-hp\localdb- 这已经接受12次迁移,使用add-migration/update-database命令3个月
截至昨天:去更新 - 数据库产生消息
PM> update-database -verbose
Using StartUp project 'PartyPoochesClient'.
Using NuGet project 'PartyPooches.Repository'.
Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
Target database is: 'PartyPooches.Repository.Entities.PartyPoochesContext' (***DataSource: (localdb)\v12.0,*** Provider: System.Data.SqlClient, Origin: Convention).
Run Code Online (Sandbox Code Playgroud)
我从未有过v12.0的实例,只有昨天的迁移/ update-database尝试PM期望看到a (localdb)\v12.0接受更新.任何代码搜索整个解决方案,(localdb)\v12.0什么都不产生.正如预期的那样,它无法在SQL Server错误50中找到这样的实例,项目使用CodeFirst创建的DB几乎有12个迁移更新到ron-hp\localdb实例而没有问题.
代码:
internal sealed class Configuration : DbMigrationsConfiguration<PartyPooches.Repository.Entities.PartyPoochesContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
ContextKey = "PartyPooches.Repository.Entities.PartyPoochesContext";
}
protected override void Seed(PartyPooches.Repository.Entities.PartyPoochesContext …Run Code Online (Sandbox Code Playgroud) entity-framework sql-server-2012 ef-migrations asp.net-web-api
我正在使用实体框架迁移,并且需要设置实体中十进制属性的精度和小数位数。我只想对此单个十进制属性(而不是所有十进制属性)执行此操作。我已经重写了OnModelCreating方法,以默认将小数设置为(18,2)。我需要此属性为(22,5)。例如
public class AdditionalCharge
{
public decimal? Rate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在数据库中被创建为“十进制(18,2)NULL”列。我需要它成为“十进制(22,5)NULL”列。
我可以创建一个空迁移并手动编码更改,
public override void Up()
{
AlterColumn("dbo.AdditionalCharge", "Rate", c => c.Decimal(nullable: true, precision: 22, scale: 5));
}
Run Code Online (Sandbox Code Playgroud)
但是我只想更改C#声明,然后让迁移创建更改。
有没有办法做到这一点?
麦克风
我首先使用实体框架代码并添加了一个类,该类具有类的列表,其中类还必须具有另一个类列表,但是当我尝试通过迁移对数据库进行更新时,我得到:
SubscaleScore类型属性"SubscaleStatistics"上的ForeignKeyAttribute无效.在依赖类型"SubscaleScore"上找不到外键名称"SubscaleStatisticsId".Name值应该是以逗号分隔的外键属性名称列表.
这是我的课程的样子:
public class ExamStatistics : StatisticsData
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Required]
public int TestId { get; set; }
public IList<SubscaleStatistics> Subscales { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
public class SubscaleStatistics
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int SubscaleStatisticsId { get; set; }
public int TestId { get; set; }
public int SubscaleNumber { get; set; }
public int ExamStatisticsId { get; set; }
[ForeignKey("ExamStatisticsId")]
public virtual ExamStatistics ExamStatistics { get; set; }
public IList<SubscaleScore> SubscaleScores …Run Code Online (Sandbox Code Playgroud) IdentityServer 4的新手。我在文档中的此处遵循IdentityServer4 EntityFramework示例。
运行迁移脚本后
dotnet ef migrations add InitialIdentityServerPersistedGrantDbMigration -c PersistedGrantDbContext -o Data/Migrations/IdentityServer/PersistedGrantDb
dotnet ef migrations add InitialIdentityServerConfigurationDbMigration -c ConfigurationDbContext -o Data/Migrations/IdentityServer/ConfigurationDb
Run Code Online (Sandbox Code Playgroud)
它可以工作,现在我的应用程序具有3个数据库上下文。
我的问题是这两个数据库上下文是做什么的?应用程序数据库上下文和其他两个上下文有什么区别?
如果我更新或添加任何模型,是否需要更新所有三个模型?或者什么时候应该在ApplicationDbContext上运行迁移,什么时候应该在其他两个上运行。
对此有任何见识或文献表示赞赏。谢谢。