Свободно NHibernate .net core 3.1 с sql server

#.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 является не первичным ключом, а идентификатором и имеет автоинкремент в моей таблице.