Migrating Database in a N-Tier Application with Entity Framework Codefirst

时间:2016-12-08 14:48:19

标签: c# asp.net entity-framework n-tier-architecture

I'm trying to create database with Entity Framework Code first approach in my layered project structure. I use standart code-first console commands;

  • enable-migrations => ok
  • add-migration Init => problem: it doesn't produce migration code, there are just up and down methods
  • update-database => nothing to do; there is no change

How can I execute this migration in layered structure? How are migration changes tracked?

You can check my code simply on github: https://github.com/srht/layeredIdentity

在github上的代码中;它曾经创建了init迁移,但在我删除数据库之后它又没有创建这样的初始迁移代码。

1 个答案:

答案 0 :(得分:0)

  

......只有上下方法......

这就是迁移的工作方式,当您执行> Traceback (most recent call last): File "<stdin>", line 1, in > <module> File > "/usr/local/lib/python3.4/dist-packages/dropbox/__init__.py", line 3, > in <module> > from .dropbox import __version__, Dropbox, DropboxTeam, create_session File > "/usr/local/lib/python3.4/dist-packages/dropbox/dropbox.py", line 19, > in <module> > from . import files, stone_serializers File "/usr/local/lib/python3.4/dist-packages/dropbox/files.py", line 8, in > <module> > from . import stone_validators as bv File "/usr/local/lib/python3.4/dist-packages/dropbox/stone_validators.py", > line 21, in <module> > from typing import Optional ImportError: No module named 'typing' 时,始终存在隐式源迁移和目标迁移,因此EF会逐步应用这两个源和目标迁移之间的所有Up方法(或者Down)方法,如果您降级数据库)。 EF生成要为每次迁移应用的SQL代码,如果要查看它,可以使用Update-Database参数运行Update-Database。这样就不会执行任何更改,您可以检查生成的SQL。

  

如何跟踪迁移更改?

有一个名为-script的表。在该表中运行__MigrationsHistory EF插入时,应用的每个迁移的记录。下次更改模型类的代码时,必须通过运行Update-Database生成新的增量迁移。运行时Add-Migration YourNewMigrationName EF会检测自上次上次迁移以来模型中的增量更改,并生成仅包含这些更改的新迁移。迁移文件名包含一个时间戳,以便及时订购。

如果您运行Add-Migration并且没有任何反应,那是因为您的数据库是最新的,所有待处理的迁移都已应用。您应该在控制台中收到一些消息,告诉他们不要应用明确的迁移&#34;或类似的东西。如果您收到有关仍有待处理迁移或其他错误消息的其他消息,则表明出现了问题。

Here您可以从Msdn获得有关迁移工作方式的更多信息。