Data Access has been discontinued. Please refer to this page for more information.

String Properties

This topic demonstrates how to describe string properties in backend independent manner. The Fluent Mapping API exposes the following methods that allow you to map string properties in an abstract way:

  • WithFixedLength - specifies that the string property should be mapped using fixed length. This will map the property to a CHAR(n) or NCHAR(n) column, depending on the encoding.
  • WithVariableLength - specifies that the string property should be mapped using variable length. This will map the property to a VARCHAR(n) or NVARCHAR(n) column, depending on the encoding.
  • WithInfiniteLength - specifies that the string property should be mapped using infinite length. This will map the property to a VARCHAR(MAX) or NVARCHAR(MAX) column, depending on the encoding.
  • IsUnicode - specifies that the string property should be mapped to a unicode column.
  • IsNotUnicode - specifies that the string property should be mapped to a non-unicode column.

Using a combination of methods will allow you to get all of the possible types that map a string.

The following example demonstrates how to map the string properties of the Product class using the Backend Independent API.

public class FluentModelMetadataSource : FluentMetadataSource
{
   protected override IList<MappingConfiguration> PrepareMapping()
   {
       List<MappingConfiguration> configurations = new List<MappingConfiguration>();
       MappingConfiguration<Product> productConfiguration = new MappingConfiguration<Product>();
       productConfiguration.MapType().ToTable( "Products" );

       productConfiguration.HasProperty( x => x.ID ).IsIdentity( KeyGenerator.Autoinc );
       productConfiguration.HasProperty( p => p.ProductName ).WithFixedLength(15).
           IsUnicode().ToColumn("ProductName");
       productConfiguration.HasProperty( p => p.Description ).WithVariableLength( 25 ).
           IsNotUnicode().ToColumn( "Description" );
       productConfiguration.HasProperty( p => p.Comments ).WithInfiniteLength().
           ToColumn("Comments");

       configurations.Add( productConfiguration );
       return configurations;
   }
}
Public Class FluentModelMetadataSource
    Inherits FluentMetadataSource
    Protected Overrides Function PrepareMapping() As IList(Of MappingConfiguration)
        Dim configurations As New List(Of MappingConfiguration)()
        Dim productConfiguration As New MappingConfiguration(Of Product)()
        productConfiguration.MapType().ToTable("Products")
        productConfiguration.HasProperty(Function(x) x.ID).IsIdentity(KeyGenerator.Autoinc)

        productConfiguration.HasProperty(Function(p) p.ProductName).WithFixedLength(15). _
            IsUnicode().ToColumn("ProductName")
        productConfiguration.HasProperty(Function(p) p.Description).WithVariableLength(25). _
            IsNotUnicode().ToColumn("Description")
        productConfiguration.HasProperty(Function(p) p.Comments).WithInfiniteLength(). _
            ToColumn("Comments")

        productConfiguration.FieldNamingRules.AddPrefix = "_"
        configurations.Add(productConfiguration)
        Return configurations
    End Function
End Class

The result database table will have the following structure:

Product Class

public class Product
{
   public int ID
   {
       get;
       set;
   }

   public string ProductName
   {
       get;
       set;
   }

   public string Description
   {
       get;
       set;
   }

   public string Comments
   {
       get;
       set;
   }
}
Public Class Product
    Private _iD As Integer
    Public Property ID() As Integer
        Get
            Return _iD
        End Get
        Set(ByVal value As Integer)
            _iD = value
        End Set
    End Property

    Private _productName As String
    Public Property ProductName() As String
        Get
            Return _productName
        End Get
        Set(ByVal value As String)
            _productName = value
        End Set
    End Property

    Private _description As String
    Public Property Description() As String
        Get
            Return _description
        End Get
        Set(ByVal value As String)
            _description = value
        End Set
    End Property

    Private _comments As String
    Public Property Comments() As String
        Get
            Return _description
        End Get
        Set(ByVal value As String)
            _comments = value
        End Set
    End Property
End Class