In This Topic
            
    
    LinqConnect allows you to set the following parameters for mapped association:
    
    
    
      
        | Property | 
        Type | 
        Description | 
        
      
      
        | Name | 
        String | 
        
          The name of the association. This is often the same as the database's
          foreign-key constraint name. It is used to help to distinguish between
          multiple relationships in a single entity class referring to the same
          target entity class. Relationship properties on both sides of
          the relationship (if both are defined) must have the same name.
         | 
        
      
      
        | Storage | 
        String | 
        
          The name of the underlying storage member. If specified, it tells
          LinqConnect how to bypass the public property accessor for the data
          member and interact with the raw value itself. If not specified
          LinqConnect gets and sets the value using the public accessor. It is
          recommended that all association members be properties with separate
          storage members identified.
         | 
      
      
        | ThisKey | 
        String | 
        
          A comma-separated list of names of one or more members of this entity
          class that represent the key values on this side of the association.
          If not specified, the members are assumed to be the members that make
          up the primary key.
         | 
      
      
        | OtherKey | 
        String | 
        
          A comma-separated list of names of one or more members of the target
          entity class that represent the key values on the other side of the
          association. If not specified, the members are assumed to be the
          members that make up the other entity class's primary key.
           | 
      
      
        | IsUnique | 
        Boolean | 
        
          True if there a uniqueness constraint on the foreign key,
          indicating a true 1:1 relationship. This property is seldom used as
          1:1 relationships are nearly impossible to manage within the database.
          Mostly entity models are defined using 1:n relationships even when
          they are treated as 1:1 by application developers.
         | 
      
      
        | IsForeignKey | 
        Boolean | 
        
          True if the target "other" type of the association is the
          parent of the source type. With foreign-key to primary-key
          relationships, the side holding the foreign-key is the child and the
          side holding the primary key is the parent.
         | 
      
      
        | DeleteRule | 
        String | 
        
          Used to add delete behavior to this association. For example,
          "CASCADE" would add "ON DELETE CASCADE" to the FK relationship.
          If set to null, no delete behavior is added.
         | 
      
      
        | LinkTableName | 
        String | 
        
          Used for many-to-many associations. Defines the name of the many-to-many association table. 
         | 
      
      
        | LinkThisKey | 
        String | 
        
          Used for many-to-many associations. A comma-separated list of names of one or more columns of the intermediate many-to-many association table, corresponding to ThisKey members of this entity class. 
         | 
      
      
        | LinkOtherKey | 
        String | 
        
          Used for many-to-many associations. A comma-separated list of names of one or more columns of the intermediate many-to-many association table, corresponding to OtherKey members of the target entity class. 
         | 
      
    
    
        
    Attribute Mapping
    
    Association attribute is used for defining an association.
    
| C#csharp |  Copy Code | 
|---|
    [Devart.Data.Linq.Mapping.Table(Name = "Orders")]
    public partial class Order
    {
        [Devart.Data.Linq.Mapping.Column(IsPrimaryKey = true)]
        public int OrderID;
 
        [Devart.Data.Linq.Mapping.Column]
        public int CompanyID;
 
        [Devart.Data.Linq.Mapping.Association(Name = "Company_Order", Storage = "_Company", ThisKey = "CompanyID", OtherKey = "CompanyID", IsForeignKey = true)]
        public Company Company
        {
            get { return this._Company.Entity; }
            set { this._Company.Entity = value; }
        }
 
        private Devart.Data.Linq.EntityRef<Company> _Company;
 
        public Order()
        {
            this._Company = default(EntityRef<Company>);
        }
    }
 
    [Devart.Data.Linq.Mapping.Table(Name = "Companies")]
    public partial class Company
    {
        [Devart.Data.Linq.Mapping.Column(IsPrimaryKey = true)]
        public int CompanyID;
 
        [Devart.Data.Linq.Mapping.Association(Name = "Company_Order", Storage = "_Orders",ThisKey = "CompanyID", OtherKey = "CompanyID")]
        public Devart.Data.Linq.EntitySet<Order> Orders
        {
            get { return this._Orders; }
            set { this._Orders.Assign(value); }
        }
 
        private Devart.Data.Linq.EntitySet<Order> _Orders;
        
        public Company()
        {
            this._Orders = new EntitySet<Order>();
        }
 
    }
 | 
 
| Visual Basic |  Copy Code | 
|---|
<Table()> _
Public Class Company
    <Column(IsPrimaryKey:=True)> _
    Public CompanyID As Integer
    <Association(Name:="Company_Order", Storage:="_Orders", OtherKey:="CompanyID")> _
    Public Property Orders As EntitySet(Of Order)
        Get
            Return Me._Orders
        End Get
        Set(value As EntitySet(Of Order))
            Me._Orders.Assign(value)
        End Set
    End Property
    Private _Orders As EntitySet(Of Order)
End Class
<Table()> _
Public Class Order
    <Column(IsPrimaryKey:=True)> _
    Public OrderID As Integer
    <Column()> _
    Public CompanyID As Integer
    <Association(Name:="Company_Order", Storage:="_Company", ThisKey:="CompanyID")> _
    Public Property Company As Company
        Get
            Return Me._Company.Entity
        End Get
        Set(value As Company)
            Me._Company.Entity = value
        End Set
    End Property
    Private _Company As EntityRef(Of Company)
End Class | 
 
     XML Mapping
    
    Association tag is used for association mapping. 
   
   <Table>
  <Type Name="Company">
    <Column Member="CompanyID" IsPrimaryKey="true" />
    <Association Name="Company_Order" Member="Orders" Storage="_Orders" ThisKey="CompanyID" OtherKey="CompanyID" />
  </Type>
</Table>
<Table>
  <Type Name="Order">
    <Column Member="OrderID" IsPrimaryKey="true" />
    <Column Member="CompanyID" CanBeNull="false" />
    <Association Name="Company_Order" Member="Company" Storage="_Company" ThisKey="CompanyID" OtherKey="CompanyID" IsForeignKey="true" />
  </Type>
</Table>
    
     Fluent Mapping
    
    FluentMappingBuilder class methods are used for mapping associations. See the Association Configuration Classes topic for more details.
| C#csharp |  Copy Code | 
|---|
FluentMappingBuilder builder = new FluentMappingBuilder(null);
 
builder.Entity<Order>()
    .Association()
        .Name(@"Company_Order")
        .ToOne(order => order.Company).ThisKey(order => new { order.CompanyID })
        .FromMany(company => company.Orders).OtherKey(company => new { company.CompanyID });
 | 
 
| Visual Basic |  Copy Code | 
|---|
Dim builder As New FluentMappingBuilder(Nothing)
 
builder.Entity(Of Order) _
    .Association() _
        .Name("Company_Order") _
        .ToOne(Function(order) order.Company).ThisKey(Function(order) New With {order.CompanyID}) _
        .FromMany(Function(company) company.Orders).OtherKey(Function(company) New With {company.CompanyID})
 |