一键导入
mdl-entities
Complete MDL syntax reference for creating entities, attributes, associations, enumerations, and view entities
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Complete MDL syntax reference for creating entities, attributes, associations, enumerations, and view entities
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Mendix MDL authoring, project navigation, and Docker app lifecycle — entities, microflows, pages, security, navigation, OQL, REST, testing, linting, and migration. Load when working in any Mendix codebase.
MDL Agent Documents — CREATE MODEL, CREATE KNOWLEDGE BASE, CREATE CONSUMED MCP SERVICE, CREATE AGENT syntax and calling agents from microflows
ALTER PAGE / ALTER SNIPPET — SET, INSERT, DROP, REPLACE widget operations on existing pages and snippets
Migration Assessment — structured investigation of non-Mendix projects for migration planning across technology stack, data model, business logic, UI, integrations, and security
Assess Mendix Project Quality — automated linting, catalog queries, naming conventions, security, maintainability, performance, and architecture review with scored report
Browse Integration Services and Contracts — SHOW/DESCRIBE OData, REST, business event, and database connection services; query MDL CATALOG integration tables; import external entities
| name | mdl-entities |
| description | Complete MDL syntax reference for creating entities, attributes, associations, enumerations, and view entities |
| compatibility | opencode |
<entity_types>
| Type | Keyword | Stored in DB | Use Case |
|---|---|---|---|
| Persistent | create persistent entity | Yes | Business data |
| Non-Persistent | create non-persistent entity | No | Temporary/view data |
| View | create view entity | No (OQL query) | Aggregated/computed data |
| </entity_types> |
<persistent_entity>
/**
* Customer entity for storing customer data
*/
create persistent entity Module.Customer (
-- String attributes
Name: string(100) not null,
Email: string(200),
Code: string(20) unique,
-- Numeric attributes
Age: integer,
CreditLimit: decimal,
-- Boolean
IsActive: boolean default true,
-- Date/Time
CreatedDate: datetime,
BirthDate: date,
-- Enumeration
status: Module.CustomerStatus default Active,
-- Auto-number
CustomerNumber: autonumber
);
/
</persistent_entity>
<non_persistent_entity> Used for temporary data, form parameters, or calculated values.
/**
* Search parameters for customer search form
*/
create non-persistent entity Module.CustomerSearchParams (
SearchName: string(100),
SearchEmail: string(200),
MinCreditLimit: decimal,
IncludeInactive: boolean default false
);
/
</non_persistent_entity>
<attribute_types>
| Type | Syntax | Example |
|---|---|---|
| String | Name: string(length) | Name: string(100) |
| Integer | Name: integer | count: integer |
| Long | Name: long | BigNumber: long |
| Decimal | Name: decimal | Amount: decimal |
| Boolean | Name: boolean | IsActive: boolean |
| DateTime | Name: datetime | CreatedAt: datetime |
| Date | Name: date | BirthDate: date |
| Enumeration | Name: Module.EnumName | status: Module.Status |
| AutoNumber | Name: autonumber | Code: autonumber |
| Binary | Name: binary | FileData: binary |
| Hashed String | Name: hashedstring | password: hashedstring |
| </attribute_types> |
<attribute_modifiers>
| Modifier | Meaning | Example |
|---|---|---|
not null | Required field | Name: string(100) not null |
unique | Unique constraint | Code: string(20) unique |
default value | Default value | IsActive: boolean default true |
Note: Boolean attributes auto-default to false when no default is specified.
</attribute_modifiers>
/**
* Base entity
*/
create persistent entity Module.Person (
PersonName: string(100) not null,
Email: string(200)
);
/
/**
* Customer extends Person - EXTENDS before (
*/
create persistent entity Module.Customer extends Module.Person (
CustomerCode: string(20),
CreditLimit: decimal
);
/
Common parent entities for file/image storage:
-- Image entity (inherits Name, Size, Contents, thumbnail)
create persistent entity Module.ProductPhoto extends System.Image (
PhotoCaption: string(200),
SortOrder: integer default 0
);
-- File document (inherits Name, Size, Contents)
create persistent entity Module.Attachment extends System.FileDocument (
AttachmentDescription: string(500)
);
Wrong (parse error):
-- EXTENDS after ) = parse error!
create persistent entity Module.Photo (
PhotoCaption: string(200)
) extends System.Image;
### Reference (Many-to-One)
/**
* Order belongs to one Customer
*/
create association Module.Order_Customer (
PARENT Module.Customer,
CHILD Module.Order
);
/
/**
* Product can be in many Categories
* Category can have many Products
*/
create association Module.Product_Category (
PARENT Module.Category as reference set,
CHILD Module.Product
);
/
/**
* Delete orders when customer is deleted
*/
create association Module.Order_Customer (
PARENT Module.Customer,
CHILD Module.Order,
delete PARENT cascade -- Delete orders when customer deleted
);
/
Delete behaviors:
delete PARENT cascade - Delete children when parent deleteddelete PARENT prevent - Prevent deletion if children existdelete CHILD cascade - Delete parent when last child deleted
<view_entity>
/**
* Monthly sales summary by customer
*/
create view entity Module.CustomerSalesSummary (
CustomerName: string(100),
TotalOrders: integer,
TotalAmount: decimal,
LastOrderDate: datetime
)
as
select
c.Name as CustomerName,
count(o.OrderID) as TotalOrders,
sum(o.Amount) as TotalAmount,
max(o.OrderDate) as LastOrderDate
from Module.Customer c
left join c/Module.Order_Customer/Module.Order o
GROUP by c.Name;
/
</view_entity>
<entity_with_index>
/**
* Product with search index
*/
create persistent entity Module.Product (
Code: string(20) not null,
Name: string(100) not null,
Category: string(50),
Price: decimal
)
index idx_product_code on (Code)
index idx_product_category on (Category);
/
</entity_with_index>
<complete_domain_model_example>
-- Enumeration
create enumeration Shop.OrderStatus (
Draft = 'Draft',
Confirmed = 'Confirmed',
Shipped = 'Shipped',
Delivered = 'Delivered'
);
/
-- Customer entity
create persistent entity Shop.Customer (
Name: string(100) not null,
Email: string(200) not null unique,
Phone: string(20),
IsActive: boolean default true,
CreatedDate: datetime
);
/
-- Product entity
create persistent entity Shop.Product (
Code: string(20) not null unique,
Name: string(100) not null,
description: string(500),
Price: decimal not null,
Stock: integer default 0,
IsAvailable: boolean default true
);
/
-- Order entity
create persistent entity Shop.Order (
OrderNumber: autonumber,
OrderDate: datetime not null,
status: Shop.OrderStatus default Draft,
TotalAmount: decimal,
Notes: string(500)
);
/
-- Order line entity
create persistent entity Shop.OrderLine (
Quantity: integer not null,
UnitPrice: decimal not null,
LineTotal: decimal
);
/
-- Associations
create association Shop.Order_Customer (
PARENT Shop.Customer,
CHILD Shop.Order
);
/
create association Shop.OrderLine_Order (
PARENT Shop.Order,
CHILD Shop.OrderLine,
delete PARENT cascade
);
/
create association Shop.OrderLine_Product (
PARENT Shop.Product,
CHILD Shop.OrderLine
);
/
</complete_domain_model_example>
<quick_reference>
create persistent entity Module.Name (attributes);
create non-persistent entity Module.Name (attributes);
create view entity Module.Name (attributes) as select ...;
attributename: type [(length)] [not null] [unique] [default value]
create association Module.Name (
PARENT Module.ParentEntity [as reference set],
CHILD Module.ChildEntity
[, delete PARENT cascade|prevent]
);
create enumeration Module.Name (
Value1 = 'Caption1',
Value2 = 'Caption2'
);
</quick_reference>
<output_rules>Output MDL code only in code blocks. Keep explanations concise.</output_rules>