【问题标题】:EF Code First, Dropping tables seems very drasticEF Code First,删除表似乎非常激烈
【发布时间】:2012-05-01 02:49:20
【问题描述】:

我正在调查 EF Codefirst。虽然我喜欢 Code/SB 同步的好处,但表被删除和数据丢失确实让我很困扰。实际上,我的开发数据库可能有相​​当多的测试数据。有没有像使用“Alter Table”等这样的“删除表”的替代方法。

它让我不喜欢 EF Code First。

谢谢,

埃德

【问题讨论】:

    标签: asp.net-mvc-3 linq entity-framework linq-to-entities


    【解决方案1】:

    显然你没有做太多调查。除了有很多方法可以在不删除表的情况下先执行代码(例如手动进行更改)之外,Code First Migrations 已经出现了很长时间。

    http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-code-based-migrations-walkthrough.aspx

    http://blogs.msdn.com/b/adonet/archive/2012/02/09/ef-4-3-automatic-migrations-walkthrough.aspx

    这与任何其他做事方式没有任何不同。在使用 Database first 时,您也必须手动更改数据库,并且必须删除表以在 Model First 中重新生成数据库。

    这并不是关于代码的任何具体或奇怪的事情。这是适用于每一种 orm 技术的方式。

    【讨论】:

    • 谢谢。我正在学习 EF 和 MVC,我的大部分材料都参考了 EF4.1,看来现在应该使用 EF4.3。具有 DB 优先设计背景,我的自然倾向是使用 DB 优先 EF 方法,但似乎 EF Code First 是在 MVC3 中执行此操作的方法,是的,我现在需要了解“CF 迁移”以确保我可以“更新” " 数据库而不是删除,所以感谢这个指针。
    • @EdB - 关键是这对于所有数据库技术都是正常的,它不应该首先“让你失望”代码,因为你在任何事情上都有同样的问题。不,Code First 不是“在 MVC3 中实现它的方式”,它只是实现它的方式之一,而且由于它是新的,它得到了很多关注。您使用哪种方法取决于您自己的喜好。
    • 我认为我认为这是一种更好的方法,因为它可以在同一个类文件中管理所有验证属性和数据定义。然而,作为数据库设计者,我更愿意使用 E.Relationship 设计表面之类的东西来开始数据库设计过程,但是您必须注意不要覆盖任何验证属性,因为这些仍然在模型类文件中。正如您所说,这可能是一个事实,可以尝试不同的方法,看看哪种方法适合我。
    • @EdB - 另一种方法是根据需要设计数据库,然后使用 Entity Framework Power Tools 将数据库逆向工程为 Code First 模型。
    猜你喜欢
    • 2016-12-18
    • 1970-01-01
    • 2014-09-26
    • 2013-08-03
    • 2020-04-29
    • 1970-01-01
    • 1970-01-01
    • 2012-09-25
    • 2011-09-11
    相关资源
    最近更新 更多