Sybase PowerDesigner是一个卓越的数据建模工具,它用Physical model描述特定数据库的数据模型,用Conceptual Model更抽象的描述数据库无关的数据模型。我们可以从概念模型入手进行建型,再根据不同的需要生成物理模型,进而生成库结构。也可以从现有数据库导出物理模型再转换成概念模型,然后转换成另一种数据库的物理模型......
在使用程序生成持久层的实体类和描述文件的时候,使用概念模型可以避免直接与不同的数据库打交道,当时代价是需要花点时间从数据库导出物理模型再转换成概念模型。下文提供分析Sybase CDM文件的代码,作为实体类生成工具的一个扩展。
首先是定义存储概念模型的类。


Sybase Powerdesigner Conceptual Data Model 分析器using System;
Sybase Powerdesigner Conceptual Data Model 分析器
using System.Collections;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
using NBool = Nullables.NullableBoolean;
Sybase Powerdesigner Conceptual Data Model 分析器
using NByte = Nullables.NullableByte;
Sybase Powerdesigner Conceptual Data Model 分析器
using NDateTime = Nullables.NullableDateTime;
Sybase Powerdesigner Conceptual Data Model 分析器
using NDecimal = Nullables.NullableDecimal;
Sybase Powerdesigner Conceptual Data Model 分析器
using NDouble = Nullables.NullableDouble;
Sybase Powerdesigner Conceptual Data Model 分析器
using NGuid = Nullables.NullableGuid;
Sybase Powerdesigner Conceptual Data Model 分析器
using NInt16 = Nullables.NullableInt16;
Sybase Powerdesigner Conceptual Data Model 分析器
using NInt32 = Nullables.NullableInt32;
Sybase Powerdesigner Conceptual Data Model 分析器
using NInt64 = Nullables.NullableInt64;
Sybase Powerdesigner Conceptual Data Model 分析器
using NSbyte = Nullables.NullableSByte;
Sybase Powerdesigner Conceptual Data Model 分析器
using NSingle = Nullables.NullableSingle;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
using Generator;
Sybase Powerdesigner Conceptual Data Model 分析器
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
{

Sybase Powerdesigner Conceptual Data Model 分析器    
/// Entity 的摘要说明。
Sybase Powerdesigner Conceptual Data Model 分析器    
/// </summary>
{
Sybase Powerdesigner Conceptual Data Model 分析器

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        protected int _id;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._id;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._id = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _code;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._code;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._code = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _name;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._name;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._name = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _comment;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._comment;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._comment = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _objectID;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._objectID;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._objectID = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected Entity _parentEntity;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._parentEntity;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._parentEntity = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected IList _entityAttributes = new ArrayList();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entityAttributes;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entityAttributes = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected IList _entityIdentifiers = new ArrayList();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entityIdentifiers;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entityIdentifiers = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected IList _fromEntityRelationships = new ArrayList();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._fromEntityRelationships;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._fromEntityRelationships = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected IList _toEntityRelationships = new ArrayList();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._toEntityRelationships;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._toEntityRelationships = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
{
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                    EntityIdentifier identifier 
= (EntityIdentifier)obj;
{
Sybase Powerdesigner Conceptual Data Model 分析器                        
return identifier;
Sybase Powerdesigner Conceptual Data Model 分析器                    }

Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器                
return null;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected IList _childEntities = new ArrayList();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._childEntities;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected IList _siblingEntities = new ArrayList();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._siblingEntities;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器    }

{
Sybase Powerdesigner Conceptual Data Model 分析器        

Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _objectID;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._objectID;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._objectID = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _code;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._code;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._code = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _name;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._name;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._name = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _comment;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._comment;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._comment = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _dataType;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._dataType;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._dataType = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected NInt32 _length;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._length;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._length = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected NInt32 _precision;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._precision;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._precision = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _defaultValue;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._defaultValue;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._defaultValue = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _minValue;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._minValue;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._minValue = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _maxValue;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._maxValue;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._maxValue = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected IList _entityAttributes = new ArrayList();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entityAttributes;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entityAttributes = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
{
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器    }

{
Sybase Powerdesigner Conceptual Data Model 分析器

Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _objectID;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._objectID;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._objectID = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected IList _entities = new ArrayList();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entities;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entities = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected DataItem _dataItem;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._dataItem;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._dataItem = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected NBool _isMandatory;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._isMandatory;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._isMandatory = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected NBool _isSequence = false;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._isSequence;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._isSequence = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器    }

{
Sybase Powerdesigner Conceptual Data Model 分析器

Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _code;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._code;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._code = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _name;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._name;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._name = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected NBool _isPrimaryKey;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._isPrimaryKey;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._isPrimaryKey = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _objectID;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._objectID;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._objectID = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected Entity _entity;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entity;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entity = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
private IList _entityAttributes = new ArrayList();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entityAttributes;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entityAttributes = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器    }

{
Sybase Powerdesigner Conceptual Data Model 分析器

Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _objectID;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._objectID;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._objectID = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected Entity _entity1;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entity1;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entity1 = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected Entity _entity2;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entity2;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entity2 = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _name;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._name;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._name = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected string _code;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._code;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._code = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected int _entity1CardinalityMin;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entity1CardinalityMin;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entity1CardinalityMin = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected int _entity1CardinalityMax;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entity1CardinalityMax;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entity1CardinalityMax = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected int _entity2CardinalityMin;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entity2CardinalityMin;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entity2CardinalityMin = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected int _entity2CardinalityMax;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entity2CardinalityMax;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entity2CardinalityMax = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
protected EntityRelationshipTypes _relationshipType;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._relationshipType;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._relationshipType = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器        
{
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器    }

{
Sybase Powerdesigner Conceptual Data Model 分析器

Sybase Powerdesigner Conceptual Data Model 分析器        
private IDictionary _entities = new Hashtable();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._entities;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._entities = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
private IDictionary _dataItems = new Hashtable();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._dataItems;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._dataItems = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
private IDictionary _attributes = new Hashtable();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._attributes;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._attributes = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
private IDictionary _identifiers = new Hashtable();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._identifiers;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._identifiers = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
private IDictionary _relationships = new Hashtable();
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return this._relationships;
Sybase Powerdesigner Conceptual Data Model 分析器            }

{
Sybase Powerdesigner Conceptual Data Model 分析器                
this._relationships = value;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器            
//
Sybase Powerdesigner Conceptual Data Model 分析器            
// TODO: 在此处添加构造函数逻辑
Sybase Powerdesigner Conceptual Data Model 分析器            
//
Sybase Powerdesigner Conceptual Data Model 分析器
        }
Sybase Powerdesigner Conceptual Data Model 分析器    }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器}

Sybase Powerdesigner Conceptual Data Model 分析器

然后是分析CDM文件的工具类

Sybase Powerdesigner Conceptual Data Model 分析器using System;
Sybase Powerdesigner Conceptual Data Model 分析器
using System.Xml;
Sybase Powerdesigner Conceptual Data Model 分析器
using System.Collections;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
using Generator.Utils.CDM;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
using NBool = Nullables.NullableBoolean;
Sybase Powerdesigner Conceptual Data Model 分析器
using NByte = Nullables.NullableByte;
Sybase Powerdesigner Conceptual Data Model 分析器
using NDateTime = Nullables.NullableDateTime;
Sybase Powerdesigner Conceptual Data Model 分析器
using NDecimal = Nullables.NullableDecimal;
Sybase Powerdesigner Conceptual Data Model 分析器
using NDouble = Nullables.NullableDouble;
Sybase Powerdesigner Conceptual Data Model 分析器
using NGuid = Nullables.NullableGuid;
Sybase Powerdesigner Conceptual Data Model 分析器
using NInt16 = Nullables.NullableInt16;
Sybase Powerdesigner Conceptual Data Model 分析器
using NInt32 = Nullables.NullableInt32;
Sybase Powerdesigner Conceptual Data Model 分析器
using NInt64 = Nullables.NullableInt64;
Sybase Powerdesigner Conceptual Data Model 分析器
using NSbyte = Nullables.NullableSByte;
Sybase Powerdesigner Conceptual Data Model 分析器
using NSingle = Nullables.NullableSingle;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
using System.Diagnostics;
Sybase Powerdesigner Conceptual Data Model 分析器
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器    
public delegate void ProgressStatus( String message);
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器

Sybase Powerdesigner Conceptual Data Model 分析器        
public event ProgressStatus StatusChanged;
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                StatusChanged( message );
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器

Sybase Powerdesigner Conceptual Data Model 分析器        
protected XmlDocument _cdmDocument;
Sybase Powerdesigner Conceptual Data Model 分析器        
protected XmlNamespaceManager _nsmgr;
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器

Sybase Powerdesigner Conceptual Data Model 分析器        
private ConceptualDataModel _model = new ConceptualDataModel();
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器        

{
Sybase Powerdesigner Conceptual Data Model 分析器            
this._cdmDocument = new XmlDocument();
Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged( "正加载文件Sybase Powerdesigner Conceptual Data Model 分析器" );
Sybase Powerdesigner Conceptual Data Model 分析器            
this._cdmDocument.Load( conceptualDataModelFilePath );
Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("成功加载文件.");
Sybase Powerdesigner Conceptual Data Model 分析器            
this._nsmgr = new XmlNamespaceManager( this._cdmDocument.NameTable );
Sybase Powerdesigner Conceptual Data Model 分析器            
this._nsmgr.AddNamespace("c""collection");
Sybase Powerdesigner Conceptual Data Model 分析器            
this._nsmgr.AddNamespace("o""object");
Sybase Powerdesigner Conceptual Data Model 分析器            
this._nsmgr.AddNamespace("a""attribute");
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器        

{
Sybase Powerdesigner Conceptual Data Model 分析器            
this.GetEntities();
Sybase Powerdesigner Conceptual Data Model 分析器            
this.GetDataItems();
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器                Entity entity 
= (Entity)this._model.Entities[ entityOID ];
Sybase Powerdesigner Conceptual Data Model 分析器                entity 
= this.GetEntityAttributes( entity );
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器            
{
Sybase Powerdesigner Conceptual Data Model 分析器                Entity entity 
= (Entity)this._model.Entities[ entityOID ];
Sybase Powerdesigner Conceptual Data Model 分析器                entity 
= this.GetEntityIdentifiers( entity );
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器            
Sybase Powerdesigner Conceptual Data Model 分析器            
this.GetEntityRelationships();
Sybase Powerdesigner Conceptual Data Model 分析器            
Sybase Powerdesigner Conceptual Data Model 分析器            
return this._model;
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器        

{
Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("开始处理实体(entities)Sybase Powerdesigner Conceptual Data Model 分析器");
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器            XmlDocument xDoc 
= this._cdmDocument;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器            XmlNode entityNodes 
= xDoc.SelectSingleNode( "//c:Entities"this._nsmgr );
Sybase Powerdesigner Conceptual Data Model 分析器            
{
Sybase Powerdesigner Conceptual Data Model 分析器                Entity entity 
= new Entity();
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                entity.ObjectID 
= entityNode.Attributes.GetNamedItem( "Id" ).Value;
Sybase Powerdesigner Conceptual Data Model 分析器                entity.Code 
= this.GetXmlNodeInnerTextAsString( entityNode, "a:Code" );
Sybase Powerdesigner Conceptual Data Model 分析器                entity.Name 
= this.GetXmlNodeInnerTextAsString( entityNode, "a:Name" );
Sybase Powerdesigner Conceptual Data Model 分析器                entity.Comment 
= this.GetXmlNodeInnerTextAsString( entityNode, "a:Comment" );
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                
this._model.Entities.Add( entity.ObjectID, entity );
Sybase Powerdesigner Conceptual Data Model 分析器                
this.OnStatusChanged( entity.Code );
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("实体(entities)处理结束.");
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器    
Sybase Powerdesigner Conceptual Data Model 分析器    
{
Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("开始处理数据项(dataitems)Sybase Powerdesigner Conceptual Data Model 分析器");
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器            XmlNode dataItemNodes 
= this._cdmDocument.SelectSingleNode( "//c:DataItems"this._nsmgr );
Sybase Powerdesigner Conceptual Data Model 分析器            
{
Sybase Powerdesigner Conceptual Data Model 分析器                DataItem dataitem 
= new DataItem();
Sybase Powerdesigner Conceptual Data Model 分析器                
Sybase Powerdesigner Conceptual Data Model 分析器                dataitem.ObjectID 
= dataItemNode.Attributes.GetNamedItem( "Id" ).Value;
Sybase Powerdesigner Conceptual Data Model 分析器                dataitem.Code 
= this.GetXmlNodeInnerTextAsString( dataItemNode, "a:Code" );
Sybase Powerdesigner Conceptual Data Model 分析器                dataitem.Name 
= this.GetXmlNodeInnerTextAsString( dataItemNode, "a:Name" );
Sybase Powerdesigner Conceptual Data Model 分析器                dataitem.Comment 
= this.GetXmlNodeInnerTextAsString( dataItemNode, "a:Comment" );
Sybase Powerdesigner Conceptual Data Model 分析器                dataitem.DataType 
= this.GetXmlNodeInnerTextAsString( dataItemNode, "a:DataType" );
Sybase Powerdesigner Conceptual Data Model 分析器                dataitem.MinValue 
= this.GetXmlNodeInnerTextAsString( dataItemNode, "a:LowValue" );
Sybase Powerdesigner Conceptual Data Model 分析器                dataitem.MaxValue 
= this.GetXmlNodeInnerTextAsString( dataItemNode, "a:HighValue" );
Sybase Powerdesigner Conceptual Data Model 分析器                dataitem.DefaultValue 
= this.GetXmlNodeInnerTextAsString( dataItemNode, "a:DefaultValue" );
{
Sybase Powerdesigner Conceptual Data Model 分析器                    dataitem.Length 
= Int32.Parse( this.GetXmlNodeInnerTextAsString( dataItemNode, "a:Length" ) );
{
Sybase Powerdesigner Conceptual Data Model 分析器                    dataitem.Length 
= null;
Sybase Powerdesigner Conceptual Data Model 分析器                }

{
Sybase Powerdesigner Conceptual Data Model 分析器                    dataitem.Precision 
= Int32.Parse( this.GetXmlNodeInnerTextAsString( dataItemNode, "a:Precision" ) );
{
Sybase Powerdesigner Conceptual Data Model 分析器                    dataitem.Precision 
= null;
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                String temp 
= dataitem.DataType;
{
Sybase Powerdesigner Conceptual Data Model 分析器                    temp 
= temp.Replace( dataitem.Length.Value.ToString(), String.Empty );
Sybase Powerdesigner Conceptual Data Model 分析器                }

{
Sybase Powerdesigner Conceptual Data Model 分析器                    temp 
= temp.Replace( dataitem.Precision.Value.ToString(), String.Empty );
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器                temp 
= temp.Replace( ",", String.Empty );
Sybase Powerdesigner Conceptual Data Model 分析器                dataitem.DataType 
= temp;
Sybase Powerdesigner Conceptual Data Model 分析器                
Sybase Powerdesigner Conceptual Data Model 分析器                
this._model.DataItems.Add( dataitem.ObjectID, dataitem );
Sybase Powerdesigner Conceptual Data Model 分析器                
this.OnStatusChanged( dataitem.Code );
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("数据项(dataitems)处理结束.");
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器    
Sybase Powerdesigner Conceptual Data Model 分析器        
{
Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("开始处理实体属性(attributes)Sybase Powerdesigner Conceptual Data Model 分析器");
Sybase Powerdesigner Conceptual Data Model 分析器            XmlNodeList attributeNodes 
= this._cdmDocument.SelectNodes( 
Sybase Powerdesigner Conceptual Data Model 分析器                String.Format( 
"//c:Entities/o:Entity[@Id='{0}']/c:Attributes/*", entity.ObjectID ), this._nsmgr );
Sybase Powerdesigner Conceptual Data Model 分析器            
{
Sybase Powerdesigner Conceptual Data Model 分析器                EntityAttribute attr 
= new EntityAttribute();
Sybase Powerdesigner Conceptual Data Model 分析器                DataItem dataItem 
= null;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                String relDataItemObjectID 
= attributeNode.SelectSingleNode( "c:DataItem/o:DataItem/@Ref"this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器                dataItem 
= (DataItem)this._model.DataItems[ relDataItemObjectID ];
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                attr.ObjectID 
= attributeNode.Attributes.GetNamedItem( "Id" ).Value;
Sybase Powerdesigner Conceptual Data Model 分析器                attr.DataItem 
= dataItem;
Sybase Powerdesigner Conceptual Data Model 分析器                
if( attributeNode.SelectSingleNode( "a:Mandatory"this._nsmgr ) != null &&
{
Sybase Powerdesigner Conceptual Data Model 分析器                    attr.IsMandatory 
= ( attributeNode.SelectSingleNode( "a:Mandatory"this._nsmgr ).InnerText == "1" );
{
Sybase Powerdesigner Conceptual Data Model 分析器                    attr.IsMandatory 
= false;
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器                
Sybase Powerdesigner Conceptual Data Model 分析器                attr.IsSequence 
= dataItem.DataType.Trim().ToUpper().Equals( "NO".ToUpper() );
Sybase Powerdesigner Conceptual Data Model 分析器            
Sybase Powerdesigner Conceptual Data Model 分析器                entity.EntityAttributes.Add( attr );
Sybase Powerdesigner Conceptual Data Model 分析器                
this._model.Attributes.Add( attr.ObjectID, attr );
Sybase Powerdesigner Conceptual Data Model 分析器                
this.OnStatusChanged(entity.Code + " - " + attr.DataItem.Code);
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("实体属性(attributes)处理结束.");
Sybase Powerdesigner Conceptual Data Model 分析器            
return entity;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器    
Sybase Powerdesigner Conceptual Data Model 分析器        
{
Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("开始处理实体键(Identifiers)Sybase Powerdesigner Conceptual Data Model 分析器");
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器            XmlNodeList identifierNodes 
= this._cdmDocument.SelectNodes( 
Sybase Powerdesigner Conceptual Data Model 分析器                String.Format( 
"//c:Entities/o:Entity[@Id='{0}']/c:Identifiers/*", entity.ObjectID ), this._nsmgr );
Sybase Powerdesigner Conceptual Data Model 分析器            
{
Sybase Powerdesigner Conceptual Data Model 分析器                EntityIdentifier identifier 
= new EntityIdentifier();
Sybase Powerdesigner Conceptual Data Model 分析器                EntityAttribute attr 
= null;
Sybase Powerdesigner Conceptual Data Model 分析器                
Sybase Powerdesigner Conceptual Data Model 分析器                identifier.ObjectID 
= identifierNode.Attributes.GetNamedItem( "Id" ).Value;
Sybase Powerdesigner Conceptual Data Model 分析器                identifier.Code 
= identifierNode.SelectSingleNode( "a:Code"this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器                identifier.Name 
= identifierNode.SelectSingleNode( "a:Name"this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器                identifier.Entity 
= entity;
Sybase Powerdesigner Conceptual Data Model 分析器                
Sybase Powerdesigner Conceptual Data Model 分析器                XmlNodeList relAttrs 
= identifierNode.SelectNodes( "c:Identifier.Attributes/*"this._nsmgr );
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器                    String relAttrObjectID 
= relAttr.Attributes.GetNamedItem( "Ref" ).Value;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                    attr 
= (EntityAttribute)this._model.Attributes[ relAttrObjectID ];
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                    identifier.EntityAttributes.Add( attr );
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器                
Sybase Powerdesigner Conceptual Data Model 分析器                identifier.IsPrimaryKey 
= this.IsPrimaryIdentifier( identifier.Entity.ObjectID, identifier.ObjectID );
Sybase Powerdesigner Conceptual Data Model 分析器                
Sybase Powerdesigner Conceptual Data Model 分析器                entity.EntityIdentifiers.Add( identifier );
Sybase Powerdesigner Conceptual Data Model 分析器                
this._model.Identifiers.Add( identifier.ObjectID, identifier );
Sybase Powerdesigner Conceptual Data Model 分析器                
this.OnStatusChanged(entity.Code + " - " + identifier.Code);
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("实体键(Identifiers)处理结束.");
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器            
return entity;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
{
Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("开始处理实体关系(relationships)Sybase Powerdesigner Conceptual Data Model 分析器");
Sybase Powerdesigner Conceptual Data Model 分析器            XmlNodeList relationshipNodes 
= this._cdmDocument.SelectNodes( "//c:Relationships/*"this._nsmgr );
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器                EntityRelationship relationship 
= new EntityRelationship();
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                relationship.ObjectID 
= relationshipNode.Attributes.GetNamedItem( "Id" ).Value;
Sybase Powerdesigner Conceptual Data Model 分析器                relationship.Code 
= relationshipNode.SelectSingleNode( "a:Code"this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器                relationship.Name 
= relationshipNode.SelectSingleNode( "a:Name"this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                String entity1ObjectID 
= relationshipNode.SelectSingleNode( "c:Object1/o:Entity/@Ref"this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器                String entity2ObjectID 
= relationshipNode.SelectSingleNode( "c:Object2/o:Entity/@Ref"this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                Entity entity1 
= (Entity)this._model.Entities[ entity1ObjectID ];
Sybase Powerdesigner Conceptual Data Model 分析器                Entity entity2 
= (Entity)this._model.Entities[ entity2ObjectID ];
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                relationship.Entity1 
= entity1;
Sybase Powerdesigner Conceptual Data Model 分析器                relationship.Entity2 
= entity2;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                String e1Cardinality 
=    relationshipNode.SelectSingleNode( "a:Entity2ToEntity1RoleCardinality"this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器                String e2Cardinality 
=    relationshipNode.SelectSingleNode( "a:Entity1ToEntity2RoleCardinality"this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                String e1cMin 
= e1Cardinality.Split( ',' )[0];
Sybase Powerdesigner Conceptual Data Model 分析器                String e1cMax 
= e1Cardinality.Split( ',' )[1];
Sybase Powerdesigner Conceptual Data Model 分析器                String e2cMin 
= e2Cardinality.Split( ',' )[0];
Sybase Powerdesigner Conceptual Data Model 分析器                String e2cMax 
= e2Cardinality.Split( ',' )[1];
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.Entity1CardinalityMin 
= Int32.MaxValue;
{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.Entity1CardinalityMin 
= Int32.Parse( e1cMin );
Sybase Powerdesigner Conceptual Data Model 分析器                }

{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.Entity1CardinalityMax 
= Int32.MaxValue;
{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.Entity1CardinalityMax 
= Int32.Parse( e1cMax );
Sybase Powerdesigner Conceptual Data Model 分析器                }

{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.Entity2CardinalityMin 
= Int32.MaxValue;
{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.Entity2CardinalityMin 
= Int32.Parse( e2cMin );
Sybase Powerdesigner Conceptual Data Model 分析器                }

{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.Entity2CardinalityMax 
= Int32.MaxValue;
{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.Entity2CardinalityMax 
= Int32.Parse( e2cMax );
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.RelationshipType 
= EntityRelationshipTypes.OneToOne;
{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.RelationshipType 
= EntityRelationshipTypes.ManyToMany;
{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.RelationshipType 
= EntityRelationshipTypes.OneToMany;
{
Sybase Powerdesigner Conceptual Data Model 分析器                    relationship.RelationshipType 
= EntityRelationshipTypes.ManyToOne;
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                
this._model.Relationships.Add( relationship.ObjectID, relationship );
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                entity1.FromEntityRelationships.Add( relationship );
Sybase Powerdesigner Conceptual Data Model 分析器                entity2.ToEntityRelationships.Add( relationship );
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                EntityAttribute tempAttr 
= null;
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器                    
case EntityRelationshipTypes.OneToOne :
{
Sybase Powerdesigner Conceptual Data Model 分析器                            tempAttr 
= (EntityAttribute)obj;
Sybase Powerdesigner Conceptual Data Model 分析器                            entity1.EntityAttributes.Add(tempAttr);
Sybase Powerdesigner Conceptual Data Model 分析器                        }

{
Sybase Powerdesigner Conceptual Data Model 分析器                            tempAttr 
= (EntityAttribute)obj;
Sybase Powerdesigner Conceptual Data Model 分析器                            entity2.EntityAttributes.Add(tempAttr);
Sybase Powerdesigner Conceptual Data Model 分析器                        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                        entity1.Siblings.Add( entity2 );
Sybase Powerdesigner Conceptual Data Model 分析器                        entity2.Siblings.Add( entity1 );
Sybase Powerdesigner Conceptual Data Model 分析器                        
break;
Sybase Powerdesigner Conceptual Data Model 分析器                    
case  EntityRelationshipTypes.OneToMany :
{
Sybase Powerdesigner Conceptual Data Model 分析器                            tempAttr 
= (EntityAttribute)obj;
Sybase Powerdesigner Conceptual Data Model 分析器                            entity2.EntityAttributes.Add(tempAttr);
Sybase Powerdesigner Conceptual Data Model 分析器                        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                        entity1.ChildEntities.Add( entity2 );
Sybase Powerdesigner Conceptual Data Model 分析器                        entity2.Siblings.Add( entity1 );
Sybase Powerdesigner Conceptual Data Model 分析器                        
break;
Sybase Powerdesigner Conceptual Data Model 分析器                    
case  EntityRelationshipTypes.ManyToOne :
{
Sybase Powerdesigner Conceptual Data Model 分析器                            tempAttr 
= (EntityAttribute)obj;
Sybase Powerdesigner Conceptual Data Model 分析器                            entity1.EntityAttributes.Add(tempAttr);
Sybase Powerdesigner Conceptual Data Model 分析器                        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                        entity1.Siblings.Add( entity2 );
Sybase Powerdesigner Conceptual Data Model 分析器                        entity2.ChildEntities.Add( entity1 );
Sybase Powerdesigner Conceptual Data Model 分析器                        
break;
Sybase Powerdesigner Conceptual Data Model 分析器                    
case  EntityRelationshipTypes.ManyToMany :
{
Sybase Powerdesigner Conceptual Data Model 分析器                            tempAttr 
= (EntityAttribute)obj;
Sybase Powerdesigner Conceptual Data Model 分析器                            entity1.EntityAttributes.Add(tempAttr);
Sybase Powerdesigner Conceptual Data Model 分析器                        }

{
Sybase Powerdesigner Conceptual Data Model 分析器                            tempAttr 
= (EntityAttribute)obj;
Sybase Powerdesigner Conceptual Data Model 分析器                            entity2.EntityAttributes.Add(tempAttr);
Sybase Powerdesigner Conceptual Data Model 分析器                        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                        entity1.ChildEntities.Add( entity2 );
Sybase Powerdesigner Conceptual Data Model 分析器                        entity2.ChildEntities.Add( entity1 );
Sybase Powerdesigner Conceptual Data Model 分析器                        
break;
Sybase Powerdesigner Conceptual Data Model 分析器                    
default :
Sybase Powerdesigner Conceptual Data Model 分析器                        
break;
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                
this._model.Entities[ entity1ObjectID ] = entity1;
Sybase Powerdesigner Conceptual Data Model 分析器                
this._model.Entities[ entity2ObjectID ] = entity2;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                
this.OnStatusChanged( relationship.Code );
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器            
this.OnStatusChanged("实体关系(relationships)处理结束.");
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
{
Sybase Powerdesigner Conceptual Data Model 分析器            XmlNode primary 
= this._cdmDocument.SelectSingleNode( 
Sybase Powerdesigner Conceptual Data Model 分析器                String.Format( 
"//c:Entities/o:Entity[@Id='{0}']/c:PrimaryIdentifier/o:Identifier[@Ref='{1}']", entityObjectID, identifierObjectID), 
Sybase Powerdesigner Conceptual Data Model 分析器                
this._nsmgr );
Sybase Powerdesigner Conceptual Data Model 分析器            
return ( primary != null );
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器
{
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return null;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器                
return null;
Sybase Powerdesigner Conceptual Data Model 分析器            }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器            
return node.SelectSingleNode( xPathExp, this._nsmgr ).InnerText;
Sybase Powerdesigner Conceptual Data Model 分析器        }

Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器        
Sybase Powerdesigner Conceptual Data Model 分析器        
#endregion
Sybase Powerdesigner Conceptual Data Model 分析器    
Sybase Powerdesigner Conceptual Data Model 分析器    }

Sybase Powerdesigner Conceptual Data Model 分析器}

Sybase Powerdesigner Conceptual Data Model 分析器

最后是调用的示例代码:
Sybase Powerdesigner Conceptual Data Model 分析器            SybaseCDMParser parser = new SybaseCDMParser( fileName );
Sybase Powerdesigner Conceptual Data Model 分析器            parser.StatusChanged 
+= new ProgressStatus(this.parser_StatusChanged);
Sybase Powerdesigner Conceptual Data Model 分析器            ConceptualDataModel model 
= parser.processCDM();
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器                String entityString 
= String.Empty;
Sybase Powerdesigner Conceptual Data Model 分析器                Entity entity 
= (Entity)obj;
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                entityString 
+= "Entity Code:" + entity.Code + ", Entity Name:" + entity.Name + "\r\n Attributes: ";
{
Sybase Powerdesigner Conceptual Data Model 分析器                    EntityAttribute attr 
= (EntityAttribute)attrObj;
Sybase Powerdesigner Conceptual Data Model 分析器                    entityString 
+= attr.DataItem.Code + "[" + attr.IsMandatory.ToString() + "], ";
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器                entityString 
+= "\r\n Identifiers:";
Sybase Powerdesigner Conceptual Data Model 分析器
{
Sybase Powerdesigner Conceptual Data Model 分析器                    EntityIdentifier iden 
= (EntityIdentifier)idenObj;
Sybase Powerdesigner Conceptual Data Model 分析器                    entityString 
+= iden.Code + "[" + iden.IsPrimaryKey.ToString() + "], ";
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器                
Sybase Powerdesigner Conceptual Data Model 分析器                entityString 
+= "\r\n Relationships:";
{
Sybase Powerdesigner Conceptual Data Model 分析器                    EntityRelationship rel 
= (EntityRelationship)relObj;
Sybase Powerdesigner Conceptual Data Model 分析器                    entityString 
+= rel.Code + "[" + rel.Entity1.Code + "], ";
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器                entityString 
+= "\r\n";
{
Sybase Powerdesigner Conceptual Data Model 分析器                    EntityRelationship rel 
= (EntityRelationship)relObj;
Sybase Powerdesigner Conceptual Data Model 分析器                    entityString 
+= rel.Code + "[" + rel.Entity2.Code + "], ";
Sybase Powerdesigner Conceptual Data Model 分析器                }

Sybase Powerdesigner Conceptual Data Model 分析器                entityString 
+= "\r\n";
Sybase Powerdesigner Conceptual Data Model 分析器
Sybase Powerdesigner Conceptual Data Model 分析器                
this.textBox1.Text += "\r\n" + entityString;

相关文章:

  • 2021-05-22
  • 2021-06-06
  • 2022-02-18
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-14
  • 2022-12-23
  • 2021-08-25
  • 2021-05-22
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案