Creación de una clase de vista Union
Una clase de vista Union es una unión lógica de instancias de clase de origen. Una clase de vista Union incluye todas las instancias de las clases de origen a menos que limite las instancias mediante la inclusión de una cláusula WHERE en la consulta de origen.
Las clases de vista Union son útiles cuando quiere ver instancias de clases similares o idénticas que se encuentran en espacios de nombres o en equipos diferentes. Por ejemplo, puede crear una clase Union que contenga instancias de unidades de disco diferentes para supervisar.
También puede basar las propiedades de una clase de vista Union en propiedades que no están presentes en todas las instancias de clase de origen. Si las instancias de clase de origen no tienen la misma propiedad, las propiedades de las instancias de clase Union tienen un valor NULL. Por ejemplo, si una unidad de disco duro tiene una propiedad temperature pero otra no, todavía puede crear una vista Union entre las dos.
En este procedimiento se describe cómo crear una clase de vista Union.
Procedimientos para crear una clase de vista Union
Comience la definición de la clase con el calificador de cadena Union.
Los calificadores JoinOn, Association y Union son mutuamente excluyentes.
Cree las consultas que definen las clases de origen que se usan en la clase de vista con el calificador ViewSources.
Defina los nombres y la ubicación de los espacios de nombres en los que se encuentran las clases de origen con el calificador ViewSpaces.
Defina las propiedades que se asignan a las propiedades de las clases de origen con el calificador PropertySources.
Si es necesario, puede etiquetar cualquiera de las propiedades como pertenecientes a una clase de origen mediante el calificador HiddenDefault.
Defina las propiedades clave de las clases de origen de la clase de vista Union.
Cada clase de origen debe tener el mismo número de propiedades clave coincidentes con CIMType. Además, las claves de la clase de vista Union deben identificar de forma única todas las instancias de origen. En algunos casos, es posible que tenga que especificar las propiedades del sistema para asegurarse de que las instancias son únicas. Por ejemplo, si crea una vista a partir de la unión de dos clases idénticas en dos espacios de nombres diferentes, podría incluir la propiedad __Namespace como clave en la clase de vista para diferenciar entre las dos instancias. Si usa dos clases similares del mismo espacio de nombres para crear una vista, puede usar la propiedad __Class para distinguir entre ambas. Cambie el nombre de las propiedades del sistema de la vista para evitar un conflicto con las propiedades del sistema de la clase de vista.
Defina los métodos que quiere mediante el calificador MethodSource.
A diferencia de otras clases de vista, puede crear métodos para modificar una vista Union.
En este ejemplo de código se describe una clase de vista Union.
[Union, ViewSources{"SELECT Description, DeviceID, __Namespace, FileSystem, FreeSpace, VolumeName FROM LocalDisk",
"SELECT Description, DeviceID, __Namespace, FileSystem, FreeSpace, VolumeName FROM RemoteDisk"},
ViewSpaces{"\\\\.\\Root\\LocalNamespace","\\\\.\\Root\\RemoteNamespace"},
dynamic: ToInstance, provider("MS_VIEW_INSTANCE_PROVIDER")]
class UnionOfDrives
{
[PropertySources{"Description", "Description"}] string des;
[PropertySources{"DeviceID", "DeviceID"}, key] String did;
[PropertySources{"__Namespace", "__Namespace"}, key] String KEYID;
[PropertySources{"FileSystem", "FileSystem"}] String fsystem ;
[PropertySources{"FreeSpace", "FreeSpace"}] uint64 fspace;
[PropertySources{"VolumeName", "VolumeName"}] String vname;
};