管理对象模型:最佳方案和提示

本主题列出了使用管理对象模型的一些最佳方案和提示。

使用管理对象模型中的集合

管理对象模型中的集合可实现 IEnumerable 接口,提供了可用于简单迭代集合的 GetEnumerator() 方法。返回的集是变化的,这意味着该方法只会返回元数据对象的快照。如果其他用户或应用程序更改了元数据中的集(如添加、修改或删除元素),则快照将不同步。因此,在略微不同的时间实例化自同一集的两个枚举器所返回的集快照也会不同。这种“只迭代一次”设计鼓励您在需要时去获得快照。

实现 IEnumerable 接口后,您就可以使用 Microsoft Visual C# 的 foreach 语义。以下是使用集合对象的两种方法。

两种方法都可以使用;但是,若要访问集合内的特定元素,则应使用方法 2,因为该列表将被索引。此外,方法 2 在这些情况下速度更快,这是因为您不需要在集合内每次枚举一个元素。

方法 1

EntityCollection entityColl = mySysInstance.LobSystem.Entities;
      foreach (Entity entity in entityColl)
      {
            if (entity.Name == "ProductModel")
            {
entity.Identifiers.Create("ProductModelID", true, "System.Int32");
                  break;
            }
      }

方法 2

IList<Entity> entityCollection= new List<Entity>(mySysInstance.LobSystem.Entities);
      entityCollection[3].Name = "XYZ";

.

ID 及使用 GetById() 来获取特定对象

所有元数据对象都具有唯一 ID。在元数据包的整个生命周期中,这些 ID 都是永久性的。这意味着,如果删除了某个数据包,然后又将其重新导入,则对象将具有不同的 ID。但是,这些 ID 仍然是唯一的。

元数据对象提供了名为 GetById() 的方法,可用于在了解对象 ID 的情况下快速获取对象的特定实例。通常可使用该方法保存对象 ID,将其用于在以后快速获取该对象。GetById() 方法将获取实例的 ID。以下代码示例演示如何获取对象的 ID。

IList<Entity> entityCollection = new List<Entity>(mySysInstance.LobSystem.Entities);
Int EID = entityCollection[4].Id;

…

…
//and use it later like this:
Entity e = Entity.GetById(EID);

See Also

概念

业务数据目录:元数据模型