我有一个使用实体框架从 db 生成的模型。当我对数据库进行任何更改时,我会从数据库更新模型以获取模型的更改。但此更新适用于模型中包含的所有实体(表)。
现在我在表 Tab1 中添加一个新列。我不想从数据库中更新模型,因为我不想在模型中包含其他一些更改。我可以手动在模型中为实体 Tab1 添加新属性。然后它导致映射错误。
所以我需要更新Model.Store
表格以包含新列。这意味着我只想更新模型Tab1
。
我怎样才能做到这一点?
我有一个使用实体框架从 db 生成的模型。当我对数据库进行任何更改时,我会从数据库更新模型以获取模型的更改。但此更新适用于模型中包含的所有实体(表)。
现在我在表 Tab1 中添加一个新列。我不想从数据库中更新模型,因为我不想在模型中包含其他一些更改。我可以手动在模型中为实体 Tab1 添加新属性。然后它导致映射错误。
所以我需要更新Model.Store
表格以包含新列。这意味着我只想更新模型Tab1
。
我怎样才能做到这一点?
EDMX 文件是一个 XML 文件,它由 3 个不同的部分组合而成,构成了整个文件。如果您右键单击您的 EDMX 文件并选择“使用... XML 编辑器打开”,您将看到 3 个不同的部分:
<edmx:ConceptualModels>
<edmx:StorageModels>
<edmx:Mappings>
这些部分可以手动编辑,风险自负!:-)
这样你就可以只修改你需要的。
请注意,通过将模型的“元工件处理”属性更改为“复制到输出目录”,也可以生成 CSDL、SSDL 和 MSL 文件,而不是将它们嵌入二进制文件中。
如果您不想手动执行此操作,可以使用Huagati DBML/EDMX 工具,它是免费的,您可以从huagati 官方网站或从Visual Studio Gallery下载,这是一个 Visual Studio 插件,可让您选择更改的内容需要完成。
我使用以下(条件)技巧。 仅当没有表依赖于您要更新的表时,才可以这样做。
注意事项:如果其他现有表中有更改,EF 也会更新这些更改。
有办法自动完成。
右键单击 edmx 文件 > 从数据库更新模型 > 刷新选项卡 > 表 > 选择表(您要更新),然后按完成就可以了。