Class Mapping
This is a feature that would allow you to map any .NET CLR types or class properties into its equivalent database objects and types. It includes the mapping capabilities for the class/property name, primary/identity columns, class/property handlers and the database types.
Class Name Mapping
To map the class name, simply use the Map attribute.
[Map("[sales].[Customer]")]
public class Customer
{
...
}
Or, use the Table
attribute of System.ComponentModel.DataAnnotations.Schema
namespace.
[Table("[sales].[Customer]")]
public class Customer
{
...
}
Or, use the FluentMapper class for attribute-free setup. It uses the ClassMapper underneath.
FluentMapper
.Entity<Customer>()
.Table("[sales].[Customer]")
Property Name Mapping
To map the property name, simply use the Map attribute.
public class Customer
{
public int Id { get; set; }
[Map("FName")]
public string FirstName { get; set;}
[Map("LName")]
public string LastName { get; set;}
...
}
Or, use the the Column
attribute of System.ComponentModel.DataAnnotations.Schema
namespace.
public class Customer
{
public int Id { get; set; }
[Column("FName")]
public string FirstName { get; set;}
[Column("LName")]
public string LastName { get; set;}
...
}
Or, use the FluentMapper class for attribute-free setup. It uses the PropertyMapper underneath.
FluentMapper
.Entity<Customer>()
.Column(e => e.FirstName, "[FName]")
.Column(e => e.LastName, "[LName]");
Primary Mapping
To map the class primary property, simply use the Primary attribute.
public class Customer
{
[Primary]
public int Id { get; set; }
...
}
Or, use the Key
attribute of System.ComponentModel.DataAnnotations
namespace.
public class Customer
{
[Key]
public int Id { get; set; }
...
}
Or, use the FluentMapper class for attribute-free setup. It uses the PrimaryMapper underneath.
FluentMapper
.Entity<Customer>()
.Primary(e => e.Id);
Identity Mapping
To map the class identity property, simply use the Identity attribute.
public class Customer
{
[Identity]
public int Id { get; set; }
...
}
Or, use the FluentMapper class for attribute-free setup. It uses the IdentityMapper underneath.
FluentMapper
.Entity<Customer>()
.Identity(e => e.Id);
Class Handler Mapping
To map the class handler, simply use the ClassHandler attribute.
[ClassHandler(CustomerClassHandler)]
public class Customer
{
public int Id { get; set; }
...
}
Or, use the FluentMapper class for attribute-free setup. It uses the ClassHandlerMapper underneath.
FluentMapper
.Entity<Customer>()
.ClassHandler<CustomerClassHandler>();
Property Handler Mapping
To map the class property equivalent property handler, simply use the PropertyHandler attribute.
public class Customer
{
public int Id { get; set; }
...
[PropertyHandler(PersonAddressPropertyHandler)]
public Address Address { get; set; }
...
}
Or, use the FluentMapper class for attribute-free setup. It uses the PropertyHandlerMapper underneath.
FluentMapper
.Entity<Customer>()
.PropertyHandler<PersonAddressPropertyHandler>(e => e.Address);
Database Type Mapping
To map the class property equivalent database type, simply use the TypeMap attribute.
public class Customer
{
public int Id { get; set; }
...
[TypeMap(DbType.DateTime2)]
public DateTime DateOfBirth { get; set; }
...
}
Or, use the FluentMapper class for attribute-free setup. It uses the TypeMapper underneath.
FluentMapper
.Entity<Customer>()
.Column(e => e.DateOfBirth, DbType.DateTime2);
Type Level
You can also use the FluentMapper or the TypeMapper classes to map the .NET CLR type into its equivalent database type mapping.
It is useful if you would like to always map the System.DateTime
.NET CLR type equivalent to DbType.DateTime2
database type.
FluentMapper
.Type<DateTime>()
.DbType(DbType.DateTime2);
Please visit the Type Mapping feature for further information.