C# 在Entity Framework 6.0中从数据库更新模型
我正在开发一个Web API服务(在Visual Studio 2013中),并在解决方案中添加了ADO.NET实体数据模型(数据库优先) 我包含的所有表都在edmx图表中正确创建 然后我做了一些更改:在源数据库中添加了两个新列,删除了一个列。因此,当我尝试从数据库更新模型时,会添加两个新列,而删除的列仍在我的模型中,消息如下: 错误11009:未映射属性“Image” 其中,C# 在Entity Framework 6.0中从数据库更新模型,c#,entity-framework,sql-server-2008,entity-framework-6,ado.net-entity-data-model,C#,Entity Framework,Sql Server 2008,Entity Framework 6,Ado.net Entity Data Model,我正在开发一个Web API服务(在Visual Studio 2013中),并在解决方案中添加了ADO.NET实体数据模型(数据库优先) 我包含的所有表都在edmx图表中正确创建 然后我做了一些更改:在源数据库中添加了两个新列,删除了一个列。因此,当我尝试从数据库更新模型时,会添加两个新列,而删除的列仍在我的模型中,消息如下: 错误11009:未映射属性“Image” 其中,Image是数据库中已删除列的名称 我可以从模型中手动删除此属性吗?或者还有其他更干净、更安全的方法吗?当然,正如其他人
Image
是数据库中已删除列的名称
我可以从模型中手动删除此属性吗?或者还有其他更干净、更安全的方法吗?当然,正如其他人所说,改变方法可能是使用EF和DB的更好方法,但从您首先需要数据库这一事实出发,我认为使用数据库优先模型有其优点,其中之一(这取决于您第二个问题的答案)如果EDMX按原样处理,这意味着作为生成的代码段,您可以在每次需要或想要时刷新、销毁和重新创建,而不会丢失任何修改 现在,正如我前面所说的,生成代码的性质意味着您对EDMX所做的每一个更改都将丢失,因此请确保您可以删除一个属性,但是模型和数据库并不透明地同步 我认为最好的办法是
请注意:首先使用数据库,可以通过使用分部类向DbContext中添加内容和相关实体来添加功能和行为 我不认为数据库在“从数据库更新”时会首先从概念方案中删除任何内容(即仅从存储方案中删除)。但我找不到引证。我只见过有人手动从概念方案中删除东西,这感觉很奇怪。但在您的情况下,EF会将删除的列视为概念方案中的自定义项,这是违反直觉的,因为它是在存储方案和概念方案之间自动映射的。如果从数据库更新模型失败,请在关系图上选择“全部”,然后删除并从数据库更新模型。。对我有用。@PAVITRA,你的评论应该是可以接受的答案,尽管我可以删除与我的任务相关的特定表,然后在“从数据库更新模型”向导中重新添加。