模型更新向导对 EDM 所做的更改
模型更新向导可使用户在基础数据库发生更改后更新实体数据模型 (EDM)。使用模型更新向导更新 EDM 时需要注意以下两个非常重要的方面:
模型更新向导在基于数据库的更改更新 EDM 时将覆盖现有的存储模型。这意味着对存储模型所做的所有自定义更改都不会反映在更新后的模型中。
模型更新向导对概念模型和映射只做累加性更改。这意味着如果向数据库中添加新的对象,模型更新向导将向概念模型中添加相应的实体、关联和映射。但是,如果从数据库中移除对象,模型更新向导并不会从概念模型中移除相应的实体或关联(但移除相应的映射)。
下表提供了模型更新向导在数据库对象发生更改时如何修改概念模型的详细信息。
数据库对象 | 数据库中对象的更改 | 从数据库更新 EDM 时对 EDM 所做的更改 |
---|---|---|
表/视图 |
添加 |
将向概念模型添加新的 EntityType 及其相应的关联和映射。 |
删除 |
从存储模型移除表或视图。删除对该表的所有映射。如果表或视图拥有存储某外键关系的键的一个或多个列,则删除相应关联的映射。 |
|
重命名 |
重命名一个表或视图对概念模型和映射产生的影响等同于删除具有旧名称的表/视图并添加具有新名称的表/视图。 |
|
更改主键 |
如果将列添加到表或视图的主键,则为所有引用该新主键的外键添加关联。相应的新关联将被添加到概念模型中。之前存在的关联将不再映射。 如果从主键移除某列,则必须移除相应实体属性的键指定。 如果从外键中移除某列,则将在剩下的端属性之间创建新的关联。 如果将作为实体属性的列添加到主键,则必须将该实体属性设置为实体键。有关如何修改属性的信息,请参见如何:创建和修改标量属性。 如果添加的主键列在之前曾映射到某个关联(而不是实体属性),则将新建一个相应的实体属性。 |
|
列 |
添加 |
将用匹配的属性和映射更新相应的实体。如果相应的类型是继承层次结构的一部分,则只通过匹配的属性更新距层次结构的根最近的和映射到受影响的表的 EntityType。这将避免为层次结构中的子实体定义与其上级实体相同的属性。 |
删除 |
删除对该列的映射。 |
|
重命名 |
重命名一列对概念模型产生的影响等同于删除具有旧名称的列并添加具有新名称的列。 |
|
更改定义 |
不会更改概念模型或映射。如果列类型的更改导致相应的实体属性类型不兼容,则可能需要手动更新该模型。有关如何修改属性的信息,请参见如何:创建和修改标量属性。 |
|
外键 |
添加 |
如果存在所有必要的实体类型,则向概念模型添加一个新关联及所需的映射。 |
删除 |
不会更改概念模型或映射。 |
|
重命名 |
不会更改概念模型或映射。 |
|
存储过程 |
添加 |
不会更改概念模型或映射。可将存储过程作为 Function Import 手动添加到概念模型。有关更多信息,请参见如何:导入存储过程。 |
删除 |
将删除到该存储过程的映射。如果有 Function Import 映射到该存储过程,则必须删除 Function Import 或将其映射到其他存储过程。如果某实体类型的插入、更新或删除行为映射到该存储过程,则删除这些映射。 |
|
重命名 |
将删除对实体类型的任何 Function Import 或插入、更新或删除行为的存储过程映射。这对概念模型产生的影响等同于删除具有旧名称的存储过程并添加具有新名称的存储过程。必须为重命名的存储过程创建新的函数导入,或将原有函数导入重新映射到重命名的存储过程。 |
|
更改定义 |
如果向存储过程添加参数或从存储过程移除参数,则对该存储过程的所有映射都将变为无效。如果有 Function Import 映射到该存储过程,则必须删除并重新创建该 Function Import。如果某实体类型的插入、更新或删除行为映射到该存储过程,则必须重新映射该行为。 |