Документ генератора таблиц (таблица идентификаторов) в Hibernate:
https://docs.oracle.com/javaee/6/api/ja ... rator.html
https://docs.jboss.org/hibernate/orm/5.0 /mappingGuide/en-US/html/ch06.html#identifiers-generators-identity
Определяет генератор первичного ключа, на который можно ссылаться по имени, когда Элемент-генератор указан для аннотации GeneratedValue. Генератор
таблицы может быть указан в классе сущности или в поле или свойстве первичного ключа. Область действия имени генератора является глобальной для
единицы сохранения (для всех типов генераторов).
Код: Выделить всё
Example 1:
@Entity public class Employee {
...
@TableGenerator(
name="empGen",
table="ID_GEN",
pkColumnName="GEN_KEY",
valueColumnName="GEN_VALUE",
pkColumnValue="EMP_ID",
allocationSize=1)
@Id
@GeneratedValue(strategy=TABLE, generator="empGen")
int id;
...
}
Создайте новую таблицу в своей базе данных для хранения сгенерированных ключей. В таблице должно быть как минимум два столбца: один для имени ключа (например, «Table1») и один для текущего значения ключа.
Определите новый класс для представления сущности TableGenerator в ваша модель Entity Framework. Этот класс должен сопоставляться с таблицей TableGenerator в вашей базе данных.
Код: Выделить всё
public class TableGenerator
{
public string TableName { get; set; }
public int NextId { get; set; }
}
Код: Выделить всё
public DbSet TableGenerators { get; set; }
Код: Выделить всё
public int GenerateKey(string tableName)
{
var generator = TableGenerators.SingleOrDefault(t => t.TableName == tableName);
if (generator == null)
{
generator = new TableGenerator { TableName = tableName, NextId = 1 };
TableGenerators.Add(generator);
}
generator.NextId++;
SaveChanges();
return generator.NextId;
}
Код: Выделить всё
var newId = dbContext.GenerateKey("Table1");
var entity = new MyEntity { Id = newId, Name = "Entity1" };
dbContext.MyEntities.Add(entity);
dbContext.SaveChanges();
Я использую SQL Server в качестве поставщика базы данных
Подробнее здесь: https://stackoverflow.com/questions/784 ... sql-server
Мобильная версия