44

我有一个使用实体框架从 db 生成的模型。当我对数据库进行任何更改时,我会从数据库更新模型以获取模型的更改。但此更新适用于模型中包含的所有实体(表)。

现在我在表 Tab1 中添加一个新列。我不想从数据库中更新模型,因为我不想在模型中包含其他一些更改。我可以手动在模型中为实体 Tab1 添加新属性。然后它导致映射错误。

所以我需要更新Model.Store表格以包含新列。这意味着我只想更新模型Tab1

我怎样才能做到这一点?

4

3 回答 3

55

EDMX 文件是一个 XML 文件,它由 3 个不同的部分组合而成,构成了整个文件。如果您右键单击您的 EDMX 文件并选择“使用... XML 编辑器打开”,您将看到 3 个不同的部分:

  • <edmx:ConceptualModels>
  • <edmx:StorageModels>
  • <edmx:Mappings>

这些部分可以手动编辑,风险自负!:-)
这样你就可以只修改你需要的。

请注意,通过将模型的“元工件处理”属性更改为“复制到输出目录”,也可以生成 CSDL、SSDL 和 MSL 文件,而不是将它们嵌入二进制文件中。

如果您不想手动执行此操作,可以使用Huagati DBML/EDMX 工具,它是免费的,您可以从huagati 官方网站或从Visual Studio Gallery下载,这是一个 Visual Studio 插件,可让您选择更改的内容需要完成。

于 2013-06-07T13:52:40.597 回答
5

我使用以下(条件)技巧。 仅当没有表依赖于您要更新的表时,才可以这样做。

  1. 删除需要更新的表。
  2. 右键单击模型并选择“从数据库更新模型”。该表将显示在“添加”选项卡中。选择此表并更新模型。

注意事项:如果其他现有表中有更改,EF 也会更新这些更改。

于 2014-08-12T08:06:21.560 回答
-24

有办法自动完成。

右键单击 edmx 文件 > 从数据库更新模型 > 刷新选项卡 > 表 > 选择表(您要更新),然后按完成就可以了。

于 2014-01-02T06:19:05.877 回答