rauhryan
10/19/2011 - 6:54 PM

gistfile1.cs

using System;
using FluentNHibernate;
using FluentNHibernate.Conventions;
using FluentNHibernate.Conventions.AcceptanceCriteria;
using FluentNHibernate.Conventions.Inspections;
using FluentNHibernate.Conventions.Instances;
using FubuCore;

namespace DovetailCRM.Core.Persistence
{
   public class HasManyForeignKeyConvention : IHasManyConvention
   {
       public void Apply(IOneToManyCollectionInstance instance)
       {
           var key = "fk_{0}_to_{1}".ToFormat(instance.EntityType.Name.ToLower(),
                                              instance.StringIdentifierForModel.ToLower());
           instance.Key.ForeignKey(key);
       }
   }

    public class ReferencesForeignKeyConvention : IReferenceConvention, IReferenceConventionAcceptance
    {
        public void Accept(IAcceptanceCriteria<IManyToOneInspector> criteria)
        {
            criteria.Expect(x => true);
        }

        public void Apply(IManyToOneInstance instance)
        {
            var key = "fk_{0}_to_{1}".ToFormat(instance.EntityType.Name.ToLower(),
                instance.Property.Name.ToLower());

            instance.ForeignKey(key);
        }
    }
}