我们正在将位于 SQL Server 2005 数据库上的旧 VB6 应用程序升级到实体框架解决方案。数据库保持不变,除了 - 我们正在添加一个新表。当实体框架安装在客户端 PC 上时,它是否可以维护现有结构 - 并且只需添加一个新表?
这就是 Code First 的工作方式吗?我可以 100% 确定不会修改其他表吗?
我们正在将位于 SQL Server 2005 数据库上的旧 VB6 应用程序升级到实体框架解决方案。数据库保持不变,除了 - 我们正在添加一个新表。当实体框架安装在客户端 PC 上时,它是否可以维护现有结构 - 并且只需添加一个新表?
这就是 Code First 的工作方式吗?我可以 100% 确定不会修改其他表吗?
您有两个选择,使用数据库编辑器(例如 SQL 管理工作室)创建表,然后您可以将其映射到 ef 实体,或者使用迁移 ef 让您通过 ef 更新数据库。
看看这里的迁移教程:http: //msdn.microsoft.com/en-gb/data/jj591621
我不认为,如果您有一个现有的数据库并且只想添加一个表,那么切换到代码优先的努力是值得的。
可以将代码优先类映射到现有数据库(逆向工程代码优先)。实际上,我对那个工作流程不是很有经验,但我知道你可以。您必须处理大量手动映射(使用 DataAnnotations 或 Fluent API),因此在您的情况下,我建议使用 Entity Framework Database First 工作流程,因为添加单个表可以为您节省大量工作。
这个链接有一些有用的信息:亚瑟维克斯博客 - 不要错误地首先使用代码
我使用的是数据库优先方法,因为数据库开发团队正在为我在 SQL 服务器上的数据库中进行我需要的更改。
因此,每当数据库中的模式发生变化时,我都必须更新 EDMX。
注意:直接更改一个表对我不起作用,因为 VS 并不总是能正确检测到更改(对于这个问题,如果您有兴趣,这里有一些详细信息)。
因此,我正在使用以下解决方法(重新生成所有表):
在VS 2012中,双击打开 EDMX 文件。显示了表格的图形表示。
左键单击EDMX 设计器,然后按CTRL+A选择所有表。然后,按DEL删除它们。
右键单击EDMX 设计器并在上下文菜单中选择“Update Model from Database ...” 。
更新向导打开。在“添加”选项卡中,选中“表”,并根据需要选中“生成的对象名称的复数或单数化”、“在模型中包含外键列”以及可选的“将选定的存储过程和函数导入实体模型” ”。通常,我使用“复数...”和“包括外键列...”选项。
单击完成。现在按Ctrl+S保存。
该解决方法对我来说很好,并且只需要一分钟即可可靠地更新模型。