我想隐藏我的实体类的使用者的主键Id属性:
public class A
{
protected virtual int Id { get; set; }
public virtual string Name { get; set; }
... etc ...
}
使Id属性受保护不适用于标准自动映射,它无法找到它。
我尝试覆盖DefaultAutomappingConfiguration.IsId(...)
,但这只会被公共成员回复。
如何在不对每种类型使用特定ClassMap<A>
的情况下使其工作,如下所示:
http://wiki.fluentnhibernate.org/Fluent_mapping_private_properties
编辑:
我想更改自动化约定以查找名称为“Id”的任何属性,而不仅仅是公共属性。我不希望使用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 ...
答案 0 :(得分:0)
如果您使用自动化实现IIdConvention接口
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"));
}
}