В нашей программе около 50+ сущностей в LLBLGEN. Все они имеют 2 столбца с именами ModifyDatetime и ModifyUserID. Они также являются двумя последними столбцами в каждой таблице базы данных SQL.
Мы хотим изменить функцию LLBLGEN в .Save(), чтобы переменная сеанса и текущее время отправлялись на ВСЕ объекты, когда программисты выполняют .Save().
Я получил его, чтобы сохранить идентификатор пользователя сеанса и дату и время, но в некоторых случаях я получаю сообщение об ошибке, и я думаю, что это связано с изменением положения столбца во время рендеринга или компиляции.
Я скопировал две общедоступные виртуальные функции из одного из ___Entity.cs (в данном случае это CityEntity.cs), и это сработало даже при сохранении другого типа сущности (ServicesEntity.cs). Итак, какое-то время я думал, что CityFieldIndex.* — это просто случайное целое число. Оба класса имеют разное количество столбцов. Или, может быть, я не совсем понимаю этот общедоступный виртуальный и как его переопределить.
Я также пробовал просто отправлять Rows.Count - 1 и Rows.Count - 2 вместо CityFieldIndex.*
Также возникает странная ошибка при наборе ModifyUserId: значение 33 имеет тип «System.Int32», а поле имеет тип «System.Nullable`1 [System.DateTime]» (33 — это идентификатор пользователя)
Пользовательский код на CommonEntityBase.cs:
public override bool Save(IPredicate updateRestriction, bool recurse)
{
System.Diagnostics.Debug.WriteLine("i'm overriding SAVE yeii");
ModifyDatetime = DateTime.Now;
ModifyUserId = 33;
return base.Save(updateRestriction, recurse);
}
public virtual Nullable<System.DateTime> ModifyDatetime
{
get { return (Nullable<System.DateTime>)GetValue((int)CityFieldIndex.ModifyDatetime, false); }
set { SetValue((int)CityFieldIndex.ModifyDatetime, value, true); }
}
public virtual Nullable<System.Int32> ModifyUserId
{
get { return (Nullable<System.Int32>)GetValue((int)CityFieldIndex.ModifyUserId, false); }
set { SetValue((int)CityFieldIndex.ModifyUserId, value, true); }
}