将新表添加到EF

时间:2012-10-22 01:51:12

标签: c# entity-framework

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

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

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

因此,每当数据库中的模式发生变化时,我都必须更新EDMX。

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

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

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

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

  3. 删除它们
  4. 右键单击进入EDMX设计器,然后在上下文菜单中选择&#34;从数据库更新模型...&#34; 。< / p>

  5. 更新向导会打开。在&#34;添加&#34;标签,选中&#34;表格&#34; ,然后根据要求,检查&#34;复制或单个化生成的对象名称&#34; &#34;在模型中包含外键列&#34; ,并可选择&#34;将选定的存储过程和函数导入实体模型&#34;。通常,我正在使用&#34; Pluralize ...&#34;和&#34;包括外键列......&#34;选项。

  6. 点击完成。现在按 Ctrl + S

  7. 保存

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