<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/FluentNHibernate.Testing/FluentInterfaceTests/KeyManyToOnePartTests.cs</filename>
    </added>
    <added>
      <filename>src/FluentNHibernate/Mapping/KeyManyToOnePart.cs</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -59,6 +59,15 @@ namespace FluentNHibernate.Testing.DomainModel.Mapping
 				.Element(&quot;class/composite-id/key-many-to-one/column&quot;).HasAttribute(&quot;name&quot;, &quot;SomeColumn&quot;);
 		}
 
+	    [Test]
+	    public void KeyManyToOneForeignKey()
+	    {
+            new MappingTester&lt;CompIdTarget&gt;()
+                .ForMapping(c =&gt; c.CompositeId().KeyReference(x =&gt; x.Child, &quot;SomeColumn&quot;, p =&gt; p.ForeignKey(&quot;fk1&quot;)))
+                .Element(&quot;class/composite-id/key-many-to-one&quot;).HasAttribute(&quot;foreign-key&quot;, &quot;fk1&quot;);
+	    }
+
+
 		[Test]
 		public void MixedKeyPropertyAndManyToOne()
 		{</diff>
      <filename>src/FluentNHibernate.Testing/DomainModel/Mapping/CompositeIdentityPartTester.cs</filename>
    </modified>
    <modified>
      <diff>@@ -143,6 +143,7 @@
     &lt;Compile Include=&quot;FluentInterfaceTests\ElementPartTests.cs&quot; /&gt;
     &lt;Compile Include=&quot;DomainModel\Mapping\FilterTester.cs&quot; /&gt;
     &lt;Compile Include=&quot;FluentInterfaceTests\ClassMapFilterPartModelGenerationTests.cs&quot; /&gt;
+    &lt;Compile Include=&quot;FluentInterfaceTests\KeyManyToOnePartTests.cs&quot; /&gt;
     &lt;Compile Include=&quot;FluentInterfaceTests\ManyToManyPartAsTernaryTests.cs&quot; /&gt;
     &lt;Compile Include=&quot;FluentInterfaceTests\OneToManyPartAsTernaryTests.cs&quot; /&gt;
     &lt;Compile Include=&quot;FluentInterfaceTests\WhereTests.cs&quot; /&gt;</diff>
      <filename>src/FluentNHibernate.Testing/FluentNHibernate.Testing.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,4 @@
+using System;
 using System.Collections.Generic;
 using System.Reflection;
 using FluentNHibernate.Mapping;
@@ -20,11 +21,11 @@ namespace FluentNHibernate.Automapping
             return base.KeyProperty(property, columnName);
         }
 
-        protected override CompositeIdentityPart&lt;T&gt; KeyReference(PropertyInfo property, string columnName)
+        protected override CompositeIdentityPart&lt;T&gt; KeyReference(PropertyInfo property, string columnName, Action&lt;KeyManyToOnePart&gt; customMapping)
         {
             mappedProperties.Add(property.Name);
 
-            return base.KeyReference(property, columnName);
+            return base.KeyReference(property, columnName, customMapping);
         }
     }
 }
\ No newline at end of file</diff>
      <filename>src/FluentNHibernate/Automapping/AutoCompositeIdentityPart.cs</filename>
    </modified>
    <modified>
      <diff>@@ -370,6 +370,7 @@
     &lt;Compile Include=&quot;Mapping\FilterDefinition.cs&quot; /&gt;
     &lt;Compile Include=&quot;Mapping\FilterPart.cs&quot; /&gt;
     &lt;Compile Include=&quot;Mapping\IFilterDefinition.cs&quot; /&gt;
+    &lt;Compile Include=&quot;Mapping\KeyManyToOnePart.cs&quot; /&gt;
     &lt;Compile Include=&quot;Mapping\Providers\IFilterMappingProvider.cs&quot; /&gt;
     &lt;Compile Include=&quot;Utils\ReflectionExtensions.cs&quot; /&gt;
     &lt;Compile Include=&quot;Mapping\PolymorphismBuilder.cs&quot; /&gt;</diff>
      <filename>src/FluentNHibernate/FluentNHibernate.csproj</filename>
    </modified>
    <modified>
      <diff>@@ -72,7 +72,7 @@ namespace FluentNHibernate.Mapping
 		{
 		    var property = ReflectionHelper.GetProperty(expression);
 
-		    return KeyReference(property, property.Name);
+		    return KeyReference(property, property.Name, null);
 		}
 
 		/// &lt;summary&gt;
@@ -85,10 +85,25 @@ namespace FluentNHibernate.Mapping
 		{
             var property = ReflectionHelper.GetProperty(expression);
 
-            return KeyReference(property, columnName);
+            return KeyReference(property, columnName, null);
 		}
 
-        protected virtual CompositeIdentityPart&lt;T&gt; KeyReference(PropertyInfo property, string columnName)
+
+        /// &lt;summary&gt;
+        /// Defines a reference to be used as a many-to-one key for this composite-id with an explicit column name.
+        /// &lt;/summary&gt;
+        /// &lt;param name=&quot;expression&quot;&gt;A member access lambda expression for the property&lt;/param&gt;
+        /// &lt;param name=&quot;columnName&quot;&gt;The column name in the database to use for this key, or null to use the property name&lt;/param&gt;
+        /// &lt;param name=&quot;customMapping&quot;&gt;A lambda expression specifying additional settings for the key reference&lt;/param&gt;
+        /// &lt;returns&gt;The composite identity part fluent interface&lt;/returns&gt;
+        public CompositeIdentityPart&lt;T&gt; KeyReference(Expression&lt;Func&lt;T, object&gt;&gt; expression, string columnName, Action&lt;KeyManyToOnePart&gt; customMapping)
+        {
+            var property = ReflectionHelper.GetProperty(expression);
+
+            return KeyReference(property, columnName, customMapping);
+        }
+
+        protected virtual CompositeIdentityPart&lt;T&gt; KeyReference(PropertyInfo property, string columnName, Action&lt;KeyManyToOnePart&gt; customMapping)
         {
             var key = new KeyManyToOneMapping
             {
@@ -98,7 +113,12 @@ namespace FluentNHibernate.Mapping
             };
             key.AddColumn(new ColumnMapping { Name = columnName });
 
-            keyManyToOnes.Add(key);
+            var keyPart = new KeyManyToOnePart(key);
+
+            if (customMapping != null)
+                customMapping(keyPart);
+
+            keyManyToOnes.Add(key);            
 
             return this;
         }</diff>
      <filename>src/FluentNHibernate/Mapping/CompositeIdentityPart.cs</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>40c65ebfd97ba71001f177734a98f8d3b0e6aecb</id>
    </parent>
  </parents>
  <author>
    <name>Paul Batum</name>
    <email>paul.batum@gmail.com</email>
  </author>
  <url>http://github.com/jagregory/fluent-nhibernate/commit/66171c104114002d262b0a96a07998f0c39b7802</url>
  <id>66171c104114002d262b0a96a07998f0c39b7802</id>
  <committed-date>2009-11-02T22:39:15-08:00</committed-date>
  <authored-date>2009-11-02T22:39:15-08:00</authored-date>
  <message>Added support for specifying attributes on a key-many-to-one element. Resolves issue #237</message>
  <tree>f4c6532934cde2d13577cd1be3078fe357db076a</tree>
  <committer>
    <name>Paul Batum</name>
    <email>paul.batum@gmail.com</email>
  </committer>
</commit>
