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, property attributes 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.
FluentMapper
.Type<DateTime>()
.DbType(DbType.DateTime2);
Please visit the Type Mapping feature for further information.