使用Fluent Nhibernate为所有关系类型设置外键约束名称约定

时间:2014-04-22 22:51:38

标签: fluent-nhibernate fluent-nhibernate-mapping

public class ReferenceConvention : IReferenceConvention{
 public void Apply(IManyToOneInstance instance) {
      instance.ForeignKey(string.Format("FK_{0}_{1}",
           instance.EntityType.Name,
           instance.Name));
 }

}

上面的代码允许我在类型References的情况下更改外键关系的命名约定。如何为IHasManyConvention名称和IHasManyToManyConvention实现相同的结果。 IReferenceConvention的名称约定更改完美地显示了方式,但我没有达到其他类型的关系。

1 个答案:

答案 0 :(得分:2)

对于HasMany,我使用:

    /// <summary>
/// Collection relationship constraint e.g. DocumentForum.Questions (1:m)
/// </summary>
public class HasManyConvention : IHasManyConvention
{
    public void Apply(IOneToManyCollectionInstance instance)
    {
        instance.Key.ForeignKey(
            string.Format(
                "[FK {1}.{0}Id references {0}.Id {2}]",
                instance.EntityType.Name,
                instance.Relationship.Class.Name,
                instance.StringIdentifierForModel));

    }
}

很抱歉,无法帮助您使用ManyToMany - 我总是将这些表示为2 x OneToMany(对于具体的链接实体),以上所述