Fluent nHibernate with Automapping:如何在关系的 "Child" 侧设置反向
Fluent nHibernate with Automapping: How to set Inverse on "Child" side of relation
根据这个话题
我用 "parent" 属性:class:
class Box
{
public virtual int Id { get; protected set;}
public virtual IList<Item> Items {get; protected set;}
}
class Item
{
public virtual int Id { get; protected set;}
public virtual Box Parent {get; set;}
}
正如上面主题中所建议的,我编写了将 Parent
属性 的键列设置为与 Box
中的 Items
的键列相同的约定。
区别在于我想在 Parent
属性 上设置 Inverse
,而不是在集合端。有没有可能做到这一点?
我已经尝试编写 IReferenceConvention
的正确实现,但我看不到这种可能性。
没有直接的语法使多对一关系成为反向关系。
这有一些原因:
- 更自然
- 并且性能更好,因为class(父)中的引用直接映射到数据库中的外键
- 既然无论如何都需要在内存中保持一致(这是你自己要关心的部分),那无所谓。
您可以通过使 none 反转并抑制父 属性 的更新来欺骗它。我不知道 Fluent 是否可行。反正我是不会做的。就是自找麻烦
使用 XML 映射,它看起来像这样:
<many-to-one name ="Parent" ... insert="false" update="false">
此处示例:http://www.codeproject.com/Articles/472019/Object-Relational-Mapping-ORM-u
根据这个话题
我用 "parent" 属性:class:
class Box
{
public virtual int Id { get; protected set;}
public virtual IList<Item> Items {get; protected set;}
}
class Item
{
public virtual int Id { get; protected set;}
public virtual Box Parent {get; set;}
}
正如上面主题中所建议的,我编写了将 Parent
属性 的键列设置为与 Box
中的 Items
的键列相同的约定。
区别在于我想在 Parent
属性 上设置 Inverse
,而不是在集合端。有没有可能做到这一点?
我已经尝试编写 IReferenceConvention
的正确实现,但我看不到这种可能性。
没有直接的语法使多对一关系成为反向关系。
这有一些原因:
- 更自然
- 并且性能更好,因为class(父)中的引用直接映射到数据库中的外键
- 既然无论如何都需要在内存中保持一致(这是你自己要关心的部分),那无所谓。
您可以通过使 none 反转并抑制父 属性 的更新来欺骗它。我不知道 Fluent 是否可行。反正我是不会做的。就是自找麻烦
使用 XML 映射,它看起来像这样:
<many-to-one name ="Parent" ... insert="false" update="false">
此处示例:http://www.codeproject.com/Articles/472019/Object-Relational-Mapping-ORM-u