希望我所追求的是可能的。我现在正在研究在Visual Studio中使用Package Manager控制台时执行Entity Framework Code First迁移的方法,但是在运行时执行此操作。我之后的两个过程是Add-Migration和Update-Database。
为了解释一下,我希望能够为Model构建自定义元数据,并将其与现有或不存在的数据库进行比较。这应该输出与Package Manager控制台中的Add-Migration命令相同的迁移文件。
在我有一个或多个迁移文件后,我想在运行时再次运行Update-Database命令,以编程方式将Up / Down更改应用于数据库。
关键是能够向Add-Migration过程提供完全自定义(虚拟?)模型元数据,而不是基于实际poco类的数据。
如果有人之前做过类似的事情,我会感激任何关于在哪里看的指示,因为我没有使用Google搜索/ EF文档。
编辑:
解决原因:我希望我的用户能够在运行时定义他们的结构。他们将结构定义为变更集的一部分,然后能够将一个或多个变更集应用于底层数据库。从本质上讲,用户可以使用web-ui开发人员从visual studio中做的事情,除了这些类不是.cs文件,而是关系数据库中的类描述。
EF似乎非常适合这样做,因为它已经做了我需要做的一切。我以前做过模式比较和运行时更改机制。由于EF已经这样做了,我不想重新发明轮子。 EF Code First输出的迁移文件也非常适合我尝试做的事情。我还没有深入了解EF源代码的原因是我想检查其他人之前是否尝试过此操作以及是否可以共享和指示。一些具体问题:
我需要什么类/方法才能运行架构比较?
如何挂钩该流程以提供我自己的元数据" POCO"类?
输出检测到的架构更改(Up,Down和Seed方法)有哪些选项?理想情况下,当用户选择应用更改时,我希望将更改集编译为附属程序集。
如何在运行时运行DbMigration实例?
我在经过一些具体的例子之后。