我有一个使用Entity Framework从db生成的模型。当我对数据库进行任何更改时,我会从数据库更新模型以获取模型中的更改。但此更新适用于模型中包含的所有实体(表)。
现在我在表格Tab1中添加一个新列。我不想将数据库中的模型更新为我不希望包含在模型中的其他一些更改。我可以手动在实体Tab1的模型中添加新属性。然后它导致了映射错误。
所以我需要更新表的Model.Store
以包含新列。这意味着我只想更新Tab1
的模型。
我该怎么做?
答案 0 :(得分:44)
EDMX文件是一个XML文件,它由3个不同的部分组成,构成了整个事物。如果右键单击EDMX文件并选择“打开方式... XML编辑器”,您将看到3个不同的部分:
<edmx:ConceptualModels>
<edmx:StorageModels>
<edmx:Mappings>
这些部分可以手动编辑,风险自负! :-)
这样你就可以只修改你需要的东西了。
注意,也可以生成CSDL,SSDL和&amp;通过将模型的“元工件处理”属性更改为“复制到输出目录”,MSL文件而不是将它们嵌入到二进制文件中。
如果您不想手动执行此操作,则可以使用Huagati DBML/EDMX tool,它是免费的,您可以从huagati official site或visual studio gallery下载,这是一个Visual Studio插件这允许您选择需要进行的更改。
答案 1 :(得分:6)
我使用以下(条件)技巧。 仅当没有表依赖于您要更新的表时,才能执行此操作。
预防措施:如果其他现有表格中有更改,EF也会更新这些更改。
答案 2 :(得分:-15)
有办法自动完成。
右键单击edmx文件&gt;从数据库更新模型&gt;刷新标签&gt;表&gt;选择表格(您要更新)并按完成即可。