Отображение nhibernate по идентификатору кода не вставлено - PullRequest
0 голосов
/ 11 мая 2018

Я использую nhibernate 5,1,1. Отображение по коду при добавлении записи вы отправляете 2 запроса

выберите максимум (id) из Bred

вставка в Bred (Id, Name, PetType) допустимые значения ({значение max (id)}, текст, 1)

Мне нужно, чтобы идентификатор поля не отправлялся в запросе вставки, и не было первого запроса. Идентификатор автоинкремента Как я могу это сделать?

public abstract class BaseEntity
{
    /// <summary>
    /// Ин.
    /// </summary>
    public virtual int Id { get; set; }

    /// <summary>
    /// Дата добавления
    /// </summary>
    public virtual DateTime DateInsert { get; set; }
}    

public abstract class BaseMapping<T> : ClassMapping<T> where T : BaseEntity
{
    protected BaseMapping(string nameTabel)
    {
        this.Table(nameTabel);
        this.Id(x => x.Id, map =>
        {
            map.Generator(Generators.Increment);
            map.Column("\"Id\"");

        });
        this.Property(x => x.DateInsert, x =>
        {
            x.Column("\"DateInsert\"");
            x.Insert(false);
            x.Update(false);

        });
    }
}

/// <summary>
/// Справочник пород
/// </summary>
public class Breed : BaseEntity
{
    /// <summary>
    /// Название
    /// </summary>
    public virtual string Name { get; set; }

    /// <summary>
    /// Тип животных 
    /// </summary>
    public virtual PetType PetType { get; set; }
}

public class BreedMap : BaseMapping<Breed>
{
    public BreedMap() : base("\"Breed\"")
    {
        this.Property(x => x.Name, x => x.Column("\"Name\""));
        this.Property(x => x.PetType, x => x.Column("\"PetType\""));
    }
}

1 Ответ

0 голосов
/ 11 мая 2018

Мне нужно, чтобы идентификатор поля не отправлялся в запросе вставки, и не было первого запроса ...

В случае, если наша БД поддерживает IDENTITY (autoприращение на стороне БД) , мы не должны использовать Increment, но Native настройка (или Identity)

//map.Generator(Generators.Increment);
map.Generator(Generators.Native);

Проверкадокумент для подробного объяснения

5.1.5.1.генератор

small extract

increment

генерирует идентификаторы любого интегрального типа, которые являются уникальными, только когда никакой другой процесс не вставляет данные в тот жеТаблица.Не используйте в кластере.

...

native/identity

поддерживает столбцы идентификаторов в DB2, MySQL, MS SQL Server и Sybase.Идентификатор, возвращаемый базой данных, преобразуется в тип свойства с помощью Convert.ChangeType.Таким образом поддерживается любой тип интегрального свойства.

...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...