流利的NHibernate有许多公约问题

时间:2009-06-03 23:53:34

标签: fluent-nhibernate nhibernate-mapping many-to-many conventions

我是流利的nhibernate和nhibernate的新手。我想编写一个流畅的nhibernate autopersistence约定来处理为我的实体创建多对多的映射。

这就是我现在所拥有的:

using System;
using FluentNHibernate.Conventions;
using FluentNHibernate.Mapping;

namespace Namespace
{
    public class HasManyToManyConvention : IHasManyToManyConvention
    {
        public bool Accept(IManyToManyPart target) {
            return true;
        }

        public void Apply(IManyToManyPart target) {
            var parentName = target.EntityType.Name;
            var childName = target.ChildType.Name;
            const string tableNameFmt = "{0}To{1}";
            const string keyColumnFmt = "{0}Fk";
            string tableName;

            if (parentName.CompareTo(childName) < 0) {
                tableName = String.Format(tableNameFmt, parentName, childName);
            }
            else {
                tableName = String.Format(tableNameFmt, childName, parentName);
            }

            target.WithChildKeyColumn(String.Format(keyColumnFmt, childName));
            target.WithParentKeyColumn(String.Format(keyColumnFmt, parentName));
            target.WithTableName(tableName);
            target.Cascade.All();
        }
    }
}

它似乎有效,但我觉得有更好的方法可以做到这一点。

现在我的问题:

  1. 你有更好的方法吗?
  2. 你通常想要Cascade的行为吗?
  3. 除了确保此关联的双方都使用相同的表名之外,我还需要担心什么吗?

0 个答案:

没有答案