Все мои таблицы в базе данных имеют столбцы с именем «r_e_c_n_o_», не являются автоинкрементным столбцом, и нет возможности изменить его. Его база данных ERP от третьей компании, и они используют их aproach для создания базы данных.EF Возврат следующего значения из не-общего dbset
Итак ... что мне нужно, это общий метод для увеличения значения в SaveChanges() метод автоматически, в настоящее время I'm с помощью метода приведены ниже:
public static int GetNextRecno<T>(this DbContext context) where T : DadosadvEntityBase
{
lock (_locker)
{
var typeName = typeof(T).FullName;
int next = 1;
if (lastRecnos.ContainsKey(typeName))
{
int lastRecno = lastRecnos[typeName];
next = lastRecno + 1;
}
else
{
next = context.Set<T>().Max(x => x.Recno) + 1;
}
lastRecnos[typeName] = next;
return next;
}
И Я бы хотел, чтобы достичь то же самое, используя необщего типа, что-то вроде (смотрите комментируемой линия):
public static int GetNextRecno(this DbContext context, Type entityType)
{
lock (_locker)
{
var typeName = entityType.FullName;
int next = 1;
if (lastRecnos.ContainsKey(typeName))
{
int lastRecno = lastRecnos[typeName];
next = lastRecno + 1;
}
else
{
//here is the problem with a non-generic type, I have no idea how to get next value in this case
next = context.Set<T>().Max(x => x.Recno) + 1;
}
lastRecnos[typeName] = next;
return next;
}