【问题标题】:Entity Framework 5, switch from code first to database first?Entity Framework 5,从代码优先切换到数据库优先?
【发布时间】:2013-09-23 15:25:24
【问题描述】:

我已经先使用代码创建了一个数据库。它运作良好。此后,在 Visual Studio 之外对数据库进行了许多更改。如此之多,以至于任何迁移尝试都会产生错误。所以我的问题是,有没有办法将解决方案从代码优先切换到数据库优先?

【问题讨论】:

    标签: c# database ef-code-first entity-framework-5 ef-database-first


    【解决方案1】:

    这应该很简单,只需创建一个新的数据库优先模型并删除您的代码优先模型。如果您在同一个命名空间中并注意以相同的方式命名您的上下文,那么您的大部分代码都可以正常编译。

    但是,首先切换到数据库会使您失去迁移能力,这是代码优先方法的一个坚实优势。如果我是你,我会花更多的时间尝试创建迁移,甚至在生成器失败时手动编写迁移,但仍然首先坚持代码。

    【讨论】:

    • 我该怎么做?是否添加 ADO.NET 实体数据模型?如果是这样,我已经创建的模型会怎样?
    • 做什么?创建数据库优先模型?从现有数据库中添加/新建项目/数据/实体框架模型。在 VS 中只需单击几下。不过,你可能会要求别的东西......
    • @WiktorZychla 你真的感谢代码首先适合中型项目吗?我在迁移中找不到味道,尤其是种子方法和使用新版本添加数据。同样,一旦您发现自己将 SQL 写入方法中,我认为游戏就结束了。不知何故,我觉得 SQL 脚本很危险,而且感觉更安全,主要是在部署到生产环境时。
    • 听起来不错,但也有点不一致。我的问题主要是数据部分。您如何处理添加数据?假设您要添加一个新表,它是一个类似表的枚举,您有 200 个标签要添加。你把它放在种子方法中吗?如果数据在下一次部署之前发生变化怎么办。然后你从种子方法中删除它吗?还是你用上下来完成这项工作?
    • @Santhos:我从不在种子中添加实际数据,而是在迁移(向上)中使用手动 sql。这是唯一的方法,因为元数据将来可能会发生变化。没有错,反正迁移db的时候我会写手工sql,用EF以外的任何方法。
    猜你喜欢
    • 2013-07-10
    • 2014-01-06
    • 2012-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    相关资源
    最近更新 更多