- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
对于一个显而易见的问题,我提前表示歉意,但我是 Entity Framework 的新手。
我有一个位于特定程序集中的 EF Code First 项目:MyStuff.Persistence
它使用来自MyStuff.Domain
的现有领域类
我可以修改 MyStuff.Domain
,它将通过 MyStuff.Service
公开
我想将我的 EF 6.0 代码优先项目与现有数据库同步
因此,我决定按照本教程进行操作: Code First From Database MSDN guide ,
问题是它在 MyStuff.Persistence
中创建了域类,取代了 MyStuff.Domain
如何同步现有元素(数据库/域)? 我通过谷歌搜索了解了 Fluent API,但找不到这个确切的用例。
感谢您的帮助。
最佳答案
持久性和域在代码优先中是同一回事 - 它是定义数据库的一组类,也用于通过上下文与其交互。参见 http://weblogs.asp.net/scottgu/using-ef-code-first-with-an-existing-database#7579835
如果您的数据库已经存在,对其进行逆向工程并将 POCO 类移动到您想要的位置 (MyStuff.Domain),并将生成的模型代码移动到您的上下文中。这包括一个 OnModelCreating() 重写,它具有流畅的 API 代码,定义了 EF 无法按照惯例计算出的任何关系 (https://msdn.microsoft.com/en-us/data/jj679962.aspx)。
关于保持同步,EF 将从您的类构建模型并将其与数据库进行比较。如果它们不同,会发生什么将取决于您的初始化程序( http://blog.oneunicorn.com/2013/05/28/database-initializer-and-migrations-seed-methods )。您可能会选择在早期开发中使用 DropCreateDatabaseIfModelChanges。在这种情况下,EF 将删除您的数据库(包括现有数据)并根据您的模型和流畅的代码重新创建它。您可以使用初始化程序的 Seed() 方法重新填充您可能需要的任何测试数据。
一旦启动并运行了一段时间,您可能不想使用此技术,而是会切换到使用 MigrateDatabaseToLatestVersion 初始化程序的数据库迁移之类的方法。有了它,您可以像往常一样开发并可能启用 AutomaticMigrations ( https://msdn.microsoft.com/en-us/data/jj554735.aspx )。当您需要更新不同的数据库时,您会生成一个 SQL 脚本以使其与您的开发数据库同步。
关于c# - EF 6.0 代码优先 : How to Synchronize an existing database with existing domain classes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32538763/
我是一名优秀的程序员,十分优秀!