随着Fluent NHibernate
,我有一个任意的ClassMap<T>
,我想能够找出什么属性(如果有的话)被设置为primary key
。从类映射中找到主键<T>
例子:
public class PersonMap : ClassMap<Person>
{
public PersonMap()
{
Id(p => p.StupidPrimaryKeyId).GeneratedBy.Identity().Column("StupidPrimaryKeyId");
}
}
...
//usage
MemberInfo primaryKeyMember = FindPrimaryKey(new PersonMap());
谁能告诉我什么FindPrimaryKey
方法主体必须是为了回报StupidPrimaryKeyId
?
编辑:12年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的列名? – gdoron 2012-01-10 07:14:30