У меня есть представление, что я буду читать только (не пишет). В этом представлении нет уникального ключа (а не композитного события).Как сопоставить представление без столбца идентификации в NHibernate?
Итак, как я могу сопоставить этот вид в NHibernate, не касаясь представления? Я не хочу добавлять новый столбец в представление, чтобы создать для меня уникальный идентификатор. Есть ли способ сопоставить это представление и создать столбец идентификаторов на стороне NHibernate?
я могу генерировать GUID в моем классе сущностей, как:
public class MyViewClass
{
private Guid _id = new Guid();
public virtual Guid Id { get { return _id; } set { _id = value; } }
}
Но как я могу сделать отображение работы? Следующий код не работает:
public class MyViewClass: ClassMapping<MyViewClass>
{
public MyViewClass()
{
Mutable(false);
Id(x => x.Id, m => m.Generator(Generators.Guid));
}
}
Он ожидает, чтобы иметь столбец Id в поле зрения и броски:
System.Data.SqlClient.SqlException: Invalid column name 'Id'.
BTW, я использую NHibernate 3.2 и отображение кода.
Я полагаю, вы могли бы создать составной ключ, а затем, когда переопределяя 'GetHashCode' и' Equals', просто предоставляйте базовые реализации? – lbergnehr
Я бы укусил пулю и добавил 'newid() как Id' в качестве дополнительной колонки на мой взгляд. – Rippo
@seldon: составной ключ из чего? столбцы базы данных? нет реального составного ключа из столбцов базы данных, который я могу использовать в качестве уникального ключа. Также я не могу просто использовать идентификатор свойства, который я определил в MyViewClass для составного ключа, потому что он по-прежнему ищет этот столбец в базе данных (который не существует). Так что, пожалуйста, подробно расскажите о своем решении? tnx:> – kaptan