gpt4 book ai didi

c# - Fluent NHibernate 自动映射私有(private)/ protected 属性作为 Id

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:59 25 4
gpt4 key购买 nike

我想对我的实体类的使用者隐藏主键 Id 属性:

public class A
{
protected virtual int Id { get; set; }
public virtual string Name { get; set; }
... etc ...
}

使 Id 属性 protected 不适用于标准自动映射,它无法找到它。

我尝试覆盖 DefaultAutomappingConfiguration.IsId(...)但这只会被公共(public)成员回调。

如何在不使用特定 ClassMap<A> 的情况下让它工作?此处记录的每种类型的 s: http://wiki.fluentnhibernate.org/Fluent_mapping_private_properties

编辑:我想更改自动映射约定 以查找名称为“Id”的任何属性,而不仅仅是公共(public)属性。我不想使用 ClassMap<T> 在每个类的基础上配置它如下:

public ClassAMap: ClassMap<A>
{
public ClassAMap()
{
Id(Reveal.Member<ClassAMap>("Id"));
}
}
public ClassBMap: ClassMap<B>
{
public ClassBMap()
{
Id(Reveal.Member<ClassBMap>("Id"));
}
}
... etc ...

最佳答案

如果您正在使用自动映射,请实现 IIdConvention 接口(interface)

public class PrimaryKeyConvention : IIdConvention
{
public void Apply(IIdentityInstance instance)
{
instance.Column(instance.EntityType.Name + "Id");
}
}

或者如下覆盖默认的自动映射:

public ProductMap : ClassMap<Product>
{
public ProductMap()
{
Id(Reveal.Member<Product>("Id"));
}
}

关于c# - Fluent NHibernate 自动映射私有(private)/ protected 属性作为 Id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9381130/

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