【问题标题】:Adding a new table to EF向 EF 添加新表
【发布时间】:2012-10-22 01:51:12
【问题描述】:

我们正在将位于 SQL Server 2005 数据库上的旧 VB6 应用程序升级为实体框架解决方案。数据库保持不变,除了 - 我们正在添加一个新表。 Entity Framework 是否可以在将其安装在客户端 PC 上时维护现有结构 - 并且只需添加一个新表?

这就是 Code First 的工作方式吗?我可以 100% 确定不会修改其他表吗?

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    我不认为,如果您有一个现有的数据库并且只想添加一个表,那么切换到代码优先的努力是值得的。

    可以将代码优先类映射到现有数据库(逆向工程代码优先)。实际上,我对那个工作流程不是很有经验,但我知道你可以。您必须处理大量手动映射(使用 DataAnnotations 或 Fluent API),因此在您的情况下,我建议使用 Entity Framework Database First 工作流程,因为添加单个表可以为您节省大量工作。

    这个链接有一些有用的信息:Arthur Vickers Blog - Don't use Code first by mistake

    【讨论】:

      【解决方案2】:

      您有两个选择,使用数据库编辑器(例如 SQL management studio)创建表,然后您可以将其映射到 ef 实体,或者使用迁移 ef 让您通过 ef 更新数据库。

      在此处查看迁移教程:http://msdn.microsoft.com/en-gb/data/jj591621

      【讨论】:

      • 我能问一下为什么投反对票吗?也许我可以改进我的答案。
      【解决方案3】:

      我正在使用数据库优先方法,因为数据库开发团队正在为我在 SQL 服务器上的数据库中进行所需的更改。

      因此,每当数据库中的架构发生更改时,我都必须更新 EDMX。

      注意: 直接更改一个表对我不起作用,因为 VS 并不总是能正确检测到更改(对于这个问题,here 是 SO 中的一些细节,如果你是有兴趣)。

      因此,我使用以下解决方法(重新生成所有表):

      1. VS 2012 中,双击打开 EDMX 文件。显示了表格的图形表示。

      2. 左键单击进入 EDMX 设计器,然后按 CTRL+A 选择所有表。然后,按 DEL 删除它们。

      3. 右键单击进入 EDMX 设计器并在上下文菜单中选择“Update Model from Database ...”

      4. 更新向导打开。在“添加”标签中,勾选“Tables”,根据需要勾选“Pluralize or singlesize generated object names”,“在模型中包含外键列” 和可选的“将选定的存储过程和函数导入实体模型”。通常,我使用“复数...”和“包括外键列...”选项。

      5. 点击完成。现在按 Ctrl+S 保存。

      这种解决方法对我来说很好,只需一分钟即可可靠地更新模型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-23
        • 1970-01-01
        • 2015-08-27
        • 1970-01-01
        • 2016-10-09
        • 2019-09-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多