Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fluent nhibernate 使用Fluent Nhibernate为所有关系类型设置外键约束名称约定_Fluent Nhibernate_Fluent Nhibernate Mapping - Fatal编程技术网

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

Fluent nhibernate 使用Fluent Nhibernate为所有关系类型设置外键约束名称约定,fluent-nhibernate,fluent-nhibernate-mapping,Fluent Nhibernate,Fluent Nhibernate Mapping,} 上面的代码允许我在类型引用的情况下更改外键关系的命名约定。如何实现IHasManyConvention name和IHasManyToManyConvention的相同结果。IReferenceConvention的名称更改约定完美地展示了这一点,但我没有谈到其他类型的关系。对于有许多,我使用: public class ReferenceConvention : IReferenceConvention{ public void Apply(IManyToOneInstance inst

}


上面的代码允许我在类型引用的情况下更改外键关系的命名约定。如何实现IHasManyConvention name和IHasManyToManyConvention的相同结果。IReferenceConvention的名称更改约定完美地展示了这一点,但我没有谈到其他类型的关系。

对于
有许多
,我使用:

public class ReferenceConvention : IReferenceConvention{
 public void Apply(IManyToOneInstance instance) {
      instance.ForeignKey(string.Format("FK_{0}_{1}",
           instance.EntityType.Name,
           instance.Name));
 }
//
///收集关系约束,例如文档论坛问题(1:m)
/// 
公共类有许多约定:IHasManyConvention
{
public void Apply(IOneToManyCollectionInstance实例)
{
instance.Key.ForeignKey(
字符串格式(
“[FK{1}.{0}Id引用{0}.Id{2}]”,
instance.EntityType.Name,
instance.Relationship.Class.Name,
实例。StringIdentifierModel);
}
}

很抱歉,在很多方面我帮不了你-我总是将这些表达为2 x 1 omany(一个具体的链接实体),这些都包含在上述内容中

我一直在争论这是否是一个好的最佳实践。因为如果不从具体开始,然后决定向DDL中的链接表关系(又名)中添加一个代理基(或任何标量属性),那么必须重新编写大量内容…以在事后注入具体。很高兴知道有人看到了这一切。
    /// <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));

    }
}