...
Code Block |
---|
Builder.Add.Class(nameof(Elements.Office));
|
This will return an instace of ClassBuilder
that can be used to furhter configure the created class.
...
Code Block |
---|
Builder.Add.Class(nameof(Elements.Office))
.Caption(SwissGerman, "Büro")
.PluralCaption(SwissGerman, "Büros")
.NoCodeGeneration()
.Sort("Name", SortDirection.Descending);
|
There's a fallback available in case the developer needs access to the underlying IMetaClass
:
Code Block |
---|
Builder.Add.Class(nameof(Elements.Office))
.Configure(cls =>
{
// Do something with the IMetaClass
});
|
Property
To add an additional property simply use:
Code Block |
---|
Builder.Add.Property(Elements.Office, "Name", MetaType.Text);
|
This will return an instace of PropertyBuilder
that can be used to furhter configure the created property.
...
Code Block |
---|
Builder.Add.Property(Elements.Office, "ShowPeople", MetaType.Boolean)
.Caption(SwissGerman, "Personen anzeigen")
.Required()
.Transient()
.DefaultExpression("true");
|
There's a fallback available in case the developer needs access to the underlying IMetaProperty
:
Code Block |
---|
Builder.Add.Property(Elements.Office, "ShowPeople", MetaType.Boolean)
.Configure(prop =>
{
// Do something with the IMetaProperty
});
|
Relation
To add a relation simply use:
Code Block |
---|
Builder.Add.Relation(Elements.Company, AssociationType.ZeroOrOneToMany, Elements.Office, MetaPathRule.Cascade)
|
This will return an instance of RelationBuilder
that can be used to further configure the created relation.
In der folgenden Tabelle werden die unterschiedlichen AssociationType-Werte und die damit verbundene Platzierung des ForeignKeys und dessen Nullability beschrieben.
Quell-Tabelle | Quell-FK | Quell-Kardinalität | AssociationType | Ziel-Kardinalität | Ziel-Tabelle | Ziel-FK |
---|---|---|---|---|---|---|
A |
| 1 | OneToZeroOrOne | 0-1 | B | AId* |
A | BId | 0-1 | ZeroOrOneToZeroOrOne | 0-1 | B | |
A | BId* | 0-1 | ZeroOrOneToOne | 1 | B |
|
A |
| 0-1 | ZeroOrOneToMany | n | B | AId |
A |
| 1 | OneToMany | n | B | AId* |
A | BId | n | ManyToZeroOrOne | 0-1 | B |
|
A | BId* | n | ManyToOne | 1 | B |
|
Bei der ZeroOrOneToZeroOrOne Verbindung ist auch die Platzierung des FK auf der anderen Seite denkbar. Wir haben uns aber dazu entschieden, bei einer ZeroOrOneToZeroOrOne-Verbindung von A nach B den FK in A zu platzieren, damit auf A per SearchEdit ein B ausgewählt werden kann.
A relation with some additional configurations:
Code Block |
---|
Builder.Add.Relation(Elements.Company, AssociationType.ZeroOrOneToMany, Elements.Office, MetaPathRule.Cascade)
.Caption(SwissGerman, "Büros")
.InverseCaption(SwissGerman, "Firma")
.Control(nameof(ControlType.GridEditor))
.InverseControl(nameof(ControlType.SearchEdit))
.InverseLayout(LayoutType.Detail, "CompactLayout")
.Rename("Offices");
|
There's a fallback available in case the developer needs access to the underlying generated elements:
Code Block |
---|
Builder.Add.Relation(Elements.Company, AssociationType.ZeroOrOneToMany, Elements.Office, MetaPathRule.Cascade)
.Configure(tuple =>
{
// tuple.relation;
// tuple.inverseRelation;
// tuple.foreignKey;
// tuple.path;
// tuple.index;
});
|
Remove
The Builder
exposes a property Remove
that can be used to either remove a class or property from the model.
Code Block |
---|
Builder.Remove.Class("Office");
Builder.Remove.Property("Office", "Name");
|
Get
The Builder
exposes a property Get
that can be used to either retrieve a class or property from the model.
...