Classes for storing data can be defined as simple POCO classes, without any attributes or base classes.
For example:
public class Product { public int ProductID; public string ProductName; public decimal Price; }
The default naming convention will map this class to a table "Product" with a primary key "ProductID". The default naming convention is to use <Table>ID
as primary key and the name of the primary key of the related table for relations. The naming convention is fully configurable though. See [[Naming conventions]] for more information.
You can use the following attributes to customize the mapping of a class to a record:
Attribute | On | Description |
---|---|---|
[Table.Name] | Class | Specifies the name of the table for a class |
[Column.PrimaryKey(...)] | Field | Defines a primary key field, optionally autoincremented |
[Column.Name(...)] | Field | Specifies the name of the column a field should be mapped to |
[Column.Size(...)] | Field | The size (width) of a field in the database. Mostly used with string and decimal data types. The scale parameter is optional |
[Column.LargeText] | Field | Marks the field as a large text field (blob text) |
[Column.Indexed(...)] | Field | Creates an index for this field, optionally specifying the name of the index and the position of the field within that index |
[Column.Null] | Field | Specifies that a field should be nullable in the database |
[Column.NotNull] | Field | Specifies that a field should not be nullable in the database |
[Column.Ignore] | Field | Does not map the field to a database field |
For example:
[Table.Name("Products")] public class Product { [Column.PrimaryKey(AutoIncrement=true)] public int ProductID; [Column.Size(100) , Column.NotNull, Column.Indexed] public string ProductName; [Column.LargeText] public string ExtendedDescription; public decimal Price; }
See Relations