C# 非插入代码标识的nhibernate映射
我用的是nhibernate 5,1,1。代码映射 添加条目时,您发送2个请求 从列表中选择最大值(id) 插入(Id,Name,PetType)值({max(Id)的值},文本,1) 我需要在insert请求中不发送字段id,并且没有第一个请求。Id自动递增 我该怎么做C# 非插入代码标识的nhibernate映射,c#,asp.net,nhibernate,mapping-by-code,C#,Asp.net,Nhibernate,Mapping By Code,我用的是nhibernate 5,1,1。代码映射 添加条目时,您发送2个请求 从列表中选择最大值(id) 插入(Id,Name,PetType)值({max(Id)的值},文本,1) 我需要在insert请求中不发送字段id,并且没有第一个请求。Id自动递增 我该怎么做 public abstract class BaseEntity { /// <summary> /// Ин. /// </summary> public virtua
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\""));
}
}
公共抽象类BaseEntity
{
///
/// Ин.
///
公共虚拟整数Id{get;set;}
///
/// Дата добавления
///
公共虚拟日期时间日期插入{get;set;}
}
公共抽象类BaseMapping:ClassMapping,其中T:BaseEntity
{
受保护的基本映射(字符串名称选项卡)
{
此表(名称表);
this.Id(x=>x.Id,map=>
{
map.Generator(Generators.Increment);
map.Column(“\”Id\”);
});
this.Property(x=>x.DateInsert,x=>
{
x、 列(“日期插入”);
x、 插入(假);
x、 更新(假);
});
}
}
///
/// Справочник пород
///
公共类品种:BaseEntity
{
///
/// Название
///
公共虚拟字符串名称{get;set;}
///
/// Тип животных
///
公共虚拟PetType PetType{get;set;}
}
公共类BreedMap:基本映射
{
公共繁殖地图():基本(“繁殖”)
{
this.Property(x=>x.Name,x=>x.Column(“\”Name\”);
属性(x=>x.PetType,x=>x.Column(“\”PetType\”);
}
}
我需要在插入请求中不发送字段id,并且没有第一个请求
如果我们的数据库支持标识(数据库端的自动增量),我们不应该使用增量
,而是本地
设置(或标识
)
查看文档以了解详细说明
小提取物
增量
仅在以下情况下生成唯一的任何整型标识符:
没有其他进程将数据插入到同一个表中。请勿在中使用
一簇
native/identity
支持DB2、MySQL、MS SQL Server和Sybase中的标识列。
数据库返回的标识符将转换为属性
使用Convert.ChangeType键入。因此,任何整型属性类型都是
支持
我需要在插入请求中不发送字段id,并且没有第一个请求
如果我们的数据库支持标识(数据库端的自动增量),我们不应该使用增量
,而是本地
设置(或标识
)
查看文档以了解详细说明
小提取物
增量
仅在以下情况下生成唯一的任何整型标识符:
没有其他进程将数据插入到同一个表中。请勿在中使用
一簇
native/identity
支持DB2、MySQL、MS SQL Server和Sybase中的标识列。
数据库返回的标识符将转换为属性
使用Convert.ChangeType键入。因此,任何整型属性类型都是
支持
执行此“从繁殖中选择最大值(id)”可能不会为您提供下一个id,因为可能有人已经使用了它。执行此“从繁殖中选择最大值(id)”可能不会为您提供下一个id,因为可能有人已经使用了它。
//map.Generator(Generators.Increment);
map.Generator(Generators.Native);