narsil/Tanshu.Accounts.Repository/Fluent/FormulaConvention.cs

30 lines
1007 B
C#

using System;
using FluentNHibernate.Conventions;
using System.Reflection;
using FluentNHibernate;
using FluentNHibernate.Conventions.Instances;
using FluentNHibernate.Conventions.Inspections;
using FluentNHibernate.Conventions.AcceptanceCriteria;
using Tanshu.Accounts.Contracts;
using Tanshu.Accounts.SqlDAO;
using System.Diagnostics;
namespace Tanshu.Accounts.Conventions
{
public class FormulaConvention : IPropertyConvention, IPropertyConventionAcceptance
{
public void Apply(IPropertyInstance instance)
{
var property = instance.Property;
Trace.TraceInformation("Formula on {0}.{1}", property.DeclaringType.Name, property.Name);
instance.Formula(AttributeChecker.GetFormula(property.MemberInfo));
instance.Generated.Always();
}
public void Accept(IAcceptanceCriteria<IPropertyInspector> criteria)
{
criteria.Expect(x => AttributeChecker.Formula(x.Property.MemberInfo));
}
}
}