У меня есть таблица Users, где поле "ID" является полем GUID.
Используя ASPNET я создаю учетную запись пользователя и возвращаю GUID. Я пытаюсь создать связанные записи в своих таблицах со что GUID как основной идентификатор.
Проблема, с которой я сталкиваюсь, является этим, когда я вручную установил Пользователей. Идентификатор NHibernate пытается сделать Обновление, не Вставку. Я вижу это с Профилировщиком NHibernate, прежде чем это разбомбит с "Неожиданным количеством строки: 0; Ожидаемый: 1 дюйм.
Мой UsersMap для таблицы Users похож:
public class UsersMap : ClassMap<Users>
{
public UsersMap()
{
Id(x => x.ID, "ID"); //GUID
Map(x => x.Name, "Name"); //string
Map(x => x.PhoneNumber, "PhoneNumber"); //string
Map(x => x.FaxNumber, "FaxNumber"); //string
Map(x => x.EmailAddress, "EmailAddress"); //string
HasMany<UsersAddressBook>(x => x.usersAddressBook).KeyColumn("ID");
}
}
Какие-либо идеи?Заранее спасибо.
Вам необходимо указать, что вашему идентификатору будет назначено .
Id(x => x.ID)
.GeneratedBy.Assigned();
Это позволит вам указать значение без попытки NHibernate выполнить обновление.
ISession.Save имеет перегрузку, позволяющую указать идентификатор. Попробуйте использовать его и не устанавливайте свойство id вручную.