Tag: migration

EF迁移中的自定义代码执行

在我们的项目中成功使用entity framework迁移。 但是现在我遇到了一个特殊情况,我需要更新一个需要一些业务逻辑的表(在我们的应用程序中作为C#代码)。 因此,我尝试在迁移Up方法中生成一个线程,并使用业务逻辑执行此表更新。 应用程序执行不需要此表更新,应该在后台进行。 我这样做有点像这样: public partial class MyMigration : DbMigration { public override void Up() { // … do some sql migration here … // after executing the sql migrations custommethod should run // migration seems to wait until CustomMethod finished work new Thread(() => ExecuteCustomMethodDatabaseContext()).Start(); } } 我希望Up方法在启动线程后返回,EF将MigrationHistory中的迁移设置为完成。 因此,应用程序可以启动,并在后台的某个地方更新表。 但事实并非如此,迁移似乎在线程运行时运行(这需要很多时间)。 所以我的相关问题: 一般来说,在DBmigrations中执行自定义代码是一种好习惯吗? […]

asp.net CORE Migrations生成为空

我正在尝试按照教程添加从IdentityDbContext和IdentityUser生成的迁移(第二个)。 当我运行dotnet ef migration add 添加,但UP和DOWN为空。 我发现从EFMigrationHistory表中删除数据可以解决问题,但该表不包含有关该迁移的任何信息,仅包含已创建的第一个。 我尝试删除所有.TMP文件,删除并重新创建迁移。 WorldUser: namespace TheWorld.Models { public class WorldUser : IdentityUser { public DateTime FirstTrip { get; set; } } } WorldContext: namespace TheWorld.Models { public class WorldContext : IdentityDbContext { private IConfigurationRoot _config; public WorldContext(IConfigurationRoot config,DbContextOptions options) : base(options) { _config = config; } …. 奇怪的是,它昨天不起作用,今天早上我尝试删除所有.TMP文件,迁移,并通过CMD重新创建它,它生成了一个看起来正确的迁移,但是愚蠢的,我删除了它,因为它有错误的名称,因为重新创建它不再起作用。

SQLite的entity frameworkMigrationSqlGenerator

是否有一个MigrationSqlGenerator for SQLite用于entity framework? 我只发现一个来自devart的商业广告。 找不到提供程序’System.Data.SQLite’的MigrationSqlGenerator。 使用目标迁移配置类中的SetSqlGenerator方法注册其他SQL生成器。 这就是我所做的: http : //msdn.microsoft.com/en-gb/data/jj591621

在SSIS 2012中动态设置脚本任务代码

在我的应用程序中,动态创建脚本任务。 在SQL Server 2008的SSIS实现中,以下方法工作正常。 private void SetSourceCode(ScriptTask scriptTask, string code, string codeName) { string fileName = “ScriptMain.vb”; string language = “VisualBasic”; string proj = “.vbproj”; scriptTask.ScriptLanguage = VSTAScriptLanguages.GetDisplayName(language); scriptTask.ScriptingEngine.InitNewScript(language, scriptTask.ScriptProjectName, proj); scriptTask.ScriptingEngine.ShowDesigner(false); scriptTask.ScriptingEngine.AddCodeFile(fileName, code); if (!scriptTask.ScriptingEngine.Build()) throw new Exception(“Failed to build vb script code: ” + codeName); scriptTask.ScriptingEngine.SaveScriptToStorage(); if (!scriptTask.ScriptingEngine.CloseIDE(false)) { throw new Exception(“Unable to […]

Visual Studio 2015 RCentity framework6.1.3迁移错误

仅当解决方案具有多个引用EntityFramework的项目时,才会发生粘贴的以下错误。 运行“启用 – 迁移”或“添加迁移”时,我收到以下错误: New-Object:提供的值无效,或者属性是只读的。 更改值,然后重试。 在D:\ Projetos \ Monitoramento \ packages \ EntityFramework.6.1.3 \ tools \ EntityFramework.psm1:757 char:13 + $ info = New-Object System.AppDomainSetup -Property @ {+ ~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidData 🙁 🙂 [New-Object],exception+ FullyQualifiedErrorId:SetValueException,Microsoft.PowerShell.Commands.NewObjectCommand在此对象上找不到属性“PrivateBinPath”。 validation该属性是否存在且可以设置。 在D:\ Projetos \ Monitoramento \ packages \ EntityFramework.6.1.3 \ tools \ EntityFramework.psm1:772 char:9 + $ info.PrivateBinPath + =’; […]

NHibernate SchemaUpdate

从个人经验以及我读过的所有内容来看,NHibernate的SchemaUpdate不支持删除列和表。 我想使用SchemaUpdate生成迁移DDL,但没有删除会使其变得更加困难。 你怎么解决这个问题? 在进行影响数据库的更改时,还有其他工具可以帮助您将重点放在域层上吗? 是否有任何工具像SchemaUpdate一样工作(我可以将工具指向我的实体和数据库的当前版本,并让它生成更改脚本)?

关于entity framework迁移的空引用

当我使用Entity Framework迁移的Add-Migration命令时,我得到以下exception: System.NullReferenceException: Object reference not set to an instance of an object. at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetFileName(Project project, String projectItemName) at System.Data.Entity.Migrations.MigrationsCommands..ctor(Object project, Object startUpProject, String configurationTypeName, String connectionStringName, String connectionString, String connectionProviderName, PSCmdlet cmdlet) 任何见解?

在不使用IDbContextFactory的情况下编写第一个自定义连接字符串和迁移代码

我正在尝试编写一个易于理解的DBContext类,它采用自定义连接字符串,可以运行迁移,并且我允许我使用包管理器生成迁移。 我好像在四处走动。 我已经能够使用对我来说很糟糕的代码来使用它。 我在关于连接字符串和迁移的这个问题的答案中记录了这一点。 Radek的答案看起来比我的要好得多,但我发现当我实现它然后尝试在Package Manager中创建一个迁移时我收到了消息 目标上下文’DataLayer.Context’不可构造。 添加默认构造函数或提供IDbContextFactory的实现。 DataLayer.Context是我的上下文类。 我不想提供IDbContextFactory的实现(而Radek的回答似乎表明它不需要) 更新: 如果我包含一个没有参数的构造函数,我可以生成一个迁移。 例如 public Context() : base(“ConnectionStringName”) { } 对于我的上下文创建,我在app.config中传递连接字符串的名称 public Context(string connString) : base(connString) { Database.SetInitializer(new CustomInitializer()); Database.Initialize(true); } 最后,我能够生成迁移,并为用户选择的数据库运行迁移。 但是:当我删除数据库然后运行我的应用程序时,我遇到了问题。 我正在使用的初始化代码,来自上面的链接 public class CustomInitializer : IDatabaseInitializer { public void InitializeDatabase(Context context) { try { if (!context.Database.Exists()) { context.Database.Create(); } else { if (!context.Database.CompatibleWithModel(false)) […]

如何创建初始化程序来创建和迁移mysql数据库?

我一直在学习如何使用EF一个星期左右,并且我一直坚持创建/更新我的数据库的问题。 如果不存在,我可以创建一个初始化器来创建数据库: static class Program { static void Main() { Database.SetInitializer(new GumpDatabaseInitializer()); …. class GumpDatabaseInitializer : CreateDatabaseIfNotExists { public GumpDatabaseInitializer() { } protected override void Seed(GumpDatabase context) { context.Database.ExecuteSqlCommand(“CREATE UNIQUE INDEX Name ON Stations (Name)”); // Other stuff } } 或者我可以创建配置来迁移数据库 static class Program { static void Main() { Database.SetInitializer(new MigrateDatabaseToLatestVersion()); …. internal sealed class […]