#.net-core #fluent-nhibernate
#.net-ядро #свободно владеет-nhibernate
Вопрос:
Недавно я начал работать над NHibernate с .net core и попробовал что-то простое, у меня есть таблица, подобная этой:
public virtual Guid Id { get; set; }
public virtual string Name { get; set; }
public virtual string LastName { get; set; }
public virtual int ClusterId { get; set; }**
Отображение, подобное этому:
Id(x => x.Id).Column("Id").GeneratedBy.GuidNative();
Map(x => x.Name);
Map(x => x.LastName);
Id(x => x.ClusterId);
Теперь Guid является первичным ключом, clusterid — это просто идентификатор, сначала я создал таблицу и вручную вставил в нее данные, идентификатор guid, созданный на стороне сервера, вот так
37815D12-C7BF-4575-9786-306D56DCB86D
Но когда я получаю данные из базы данных через postman или etc. Guid возвращает как
00000000-0000-0000-0000-000000000000
Я возвращаю данные в коде следующим образом return _session.Query<CustomEntity>().ToList();
Я пытался изменить сопоставление с помощью .GeneratedBy.GuidComb();
и .GeneratedBy.Guid();
, но не работает.
Ответ №1:
Измените Id(x => x.ClusterId);
на Map(x => x.ClusterId);
. Наличие двух сопоставлений идентификаторов может вызвать всевозможные проблемы.
Комментарии:
1. Большое спасибо, это решило мою проблему. Думаю, я просто неправильно понял концепцию идентификатора для сопоставления nhibernate в примерах, потому что ClusterId является не первичным ключом, а идентификатором и имеет автоинкремент в моей таблице.