在我们的计划中,LLBLGEN 中有大约 50 多个实体。它们都有 2 列,称为ModifyDatetime和ModifyUserID。它们也是 SQL 数据库中每个表的最后 2 列。
我们想修改 .Save() 的 LLBLGEN 函数,以便在程序员执行 .Save()时有一个会话变量和要在所有实体上发送的当前时间
我得到它是为了保存会话用户 ID 和日期时间,但在某些情况下会出错,我认为这与在渲染或编译时更改的列的位置有关。
我从 ___Entity.cs 之一(在本例中为 CityEntity.cs)复制了 2 个公共虚拟函数,它甚至在保存另一种实体类型(ServicesEntity.cs)时也有效。所以,有一段时间,我认为 CityFieldIndex.* 只是一个随机整数。两个类都有不同数量的列。或者也许我不完全理解这个公共虚拟以及如何覆盖它。
我还尝试发送 Rows.Count - 1 和 Rows.Count - 2 而不是 CityFieldIndex.*
在 set ModifyUserId 上也出现一个奇怪的错误:值 33 的类型为“System.Int32”,而该字段的类型为“System.Nullable`1[System.DateTime]”(33 是用户 ID)
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); }
}