С 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
?
Редактировать: 1/10/12
Изначально я хотел этого, потому что хотел знать, существует ли отдельная сущность в базе данных, основываясь исключительно на первичном ключе (таким образом, мне нужно знать элемент первичного ключа, а не строку).Я указал этот путь, потому что большая часть этого кода уже существовала в нашей кодовой базе.Переосмыслив проблему, я вместо этого понял, что сопоставление должно уже позаботиться об этом, поэтому, используя NHibernate.Linq, я знаю, что это:
public virtual bool RecordExists(TRecord obj)
{
var exists = _session.Query<TRecord>().Where(r => r == obj).Any();
return exists == false;
}