【发布时间】:2012-04-09 06:24:49
【问题描述】:
使用Fluent NHibernate,我有一个任意的ClassMap<T>,我希望能够找出设置为primary key 的属性(如果有的话)。
例子:
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(p => p.StupidPrimaryKeyId).GeneratedBy.Identity().Column("StupidPrimaryKeyId");
}
}
...
//usage
MemberInfo primaryKeyMember = FindPrimaryKey(new PersonMap());
谁能告诉我FindPrimaryKey 的方法体必须是什么才能返回StupidPrimaryKeyId?
编辑:2012 年 1 月 10 日
我最初想要这个是因为我想知道数据库中是否存在一个分离的实体,仅基于主键(因此我需要知道主键成员,而不是字符串)。我设置了这条路径,因为很多这样的代码已经存在于我们的代码库中。在重新考虑这个问题之后,我意识到映射应该已经解决了这个问题,所以使用 NHibernate.Linq 我知道有这个:
public virtual bool RecordExists(TRecord obj)
{
var exists = _session.Query<TRecord>().Where(r => r == obj).Any();
return exists == false;
}
【问题讨论】:
-
为什么需要在 C# 代码中获取 PK 的列名?
标签: c# nhibernate fluent-nhibernate