gpt4 book ai didi

fluent-nhibernate - 流畅的 nhibernate 自动映射集合

转载 作者:行者123 更新时间:2023-12-04 06:50:26 24 4
gpt4 key购买 nike

我正在尝试使用 FNHib 自动映射来映射我的收藏。我要解决的问题是:

1)我希望我在项目中的所有收藏都通过私有(private)字段进行映射。我怎么能在全局范围内这么说?

2)有没有办法在不明确覆盖我的每个实体的情况下自动映射双向关系。

类组织实体示例:

private ISet<> _collectionWarehouse;
public virtual IEnumerable<WarehouseEntity> CollectionWarehouse
{

get{return _collectionWarehouse; }

set{_collectionWarehouse = new HashedSet<WarehouseEntity>((ICollection<WarehouseEntity>)value)}

}

类 WarehouseEntity 示例:
public virtual OrganizationEntity Organization{get;set;}

最佳答案

您可以使用以下约定将您的集合映射到“全局”的私有(private)字段:

// assumes camel case underscore field (i.e., _mySet)
public class CollectionAccessConvention : ICollectionConvention
{
public void Apply(ICollectionInstance instance) {
instance.Access.CamelCaseField(CamelCasePrefix.Underscore);
}
}

每当您想在 FNH 中设置“全局”自动映射首选项时,请考虑约定。如果需要,您可以在给定的类映射上使用 IAutoOverride。

就集合(HashSet 通常也是我真正想要的)部分而言,上次我不得不做一些映射时,我确实需要做一个覆盖,比如:
   public class ActivityBaseMap : IAutoMappingOverride<ActivityBase>
{
public void Override(AutoMapping<ActivityBase> m)
{
...
m.HasMany(x => x.Allocations).AsSet().Inverse();

}
}

我确实同意这应该转化为约定,也许这些天你可以这样做。如果你弄清楚了,请发布。

高温下,
绿柱石

将哈希集用作 ICollection 的代码 ==================
public virtual ICollection<WarehouseEntity> Wharehouses
{
get { return _warehouses ?? (_warehouses = new HashSet<WarehouseEntity>()); }
set { _warehouses = value; }
}
private ICollection<WarehouseEntity> _warehouses;

关于fluent-nhibernate - 流畅的 nhibernate 自动映射集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3201307/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com