Limitations
Intorduction
pmMDA.NET has some limitations which are listed here.
UML limitations
The following concept of class diagrams, which are defined by UML, can
not be used in pmMDA.NET:
-
The stereotype
of a class defines its behaviour. This means in example that no source code will be
generated for classes, which don't have a stereotype.
-
Associations between classes are converted to
properties and indexed properties.
Properties are 1..1 or 1..0-1 associations, whereas indexed properties are 1..*
associations.
-
Associations between classes are only allowed if both classes are defined in
the same package.
-
Super classes of data object must also be a data object and must be defined in
the same package as the derived class.
-
n..m associations are not supported and must be broken into two 1..n
associations.
-
Associations must have a name, which can be converted to a variable name (i.e.
not spaces, quotes, ...).
-
Data objects can not have properties with name "Id" or "Timestamp"; these names
are reserved for the pmMDA framework.
-
For primitive data types only the following types are allowed: int, long,
float, double, boolean, string
-
Indexed properties may only point to other data objects. No primitiv types or
reference codes are allowed.
Inheritance strategies restrictions
General information about
inheritance strategies.
Table per class hierarchy
-
Property names must be unique. i.e: B and C derive from A. If B defines a
property named "MyProperty", class C is not allowed to define a property with
the same name.
-
Columns for properties which aren't defined in the base data object (doesn't
derive from another object) can't have the SQL "NOT NULL" constraints. This
means the tagged value
".net-nh-can-be-null" must manually be set to
true
.
Table per concrete class
-
If you ask the pmMDA.NET framework to return all data objects of a specified
type, the data objects wich derive from that type will not be returned.
I.e. If
you ask the pmMDA.NET framework to return all Middle data objects, the Derived data object will not be returned.