获取 NullReferenceException IRepository.Insert 调用 DNN Evoq 8.2

Getting NullReferenceException IRepository.Insert Call DNN Evoq 8.2

我正在为我们的网站开发自定义模块。流程如下

我有以下 class:

[TableName("AutoRegister_Data")]
[PrimaryKey("rId", AutoIncrement = true)]
[Scope("ModuleId")]
[Cacheable("AutoRegister_Data", CacheItemPriority.Normal, 20)]
public class RegisterData
{
    public int rId { get; set; }
    public int UserID { get; set; }
    public string Email { get; set; }
    public string LastToken { get; set; }
    public DateTime LastUpdate { get; set; }
}

使用以下代码更新数据库

using (IDataContext db = DataContext.Instance())
{
    var repo = db.GetRepository<RegisterData>();
    var user = repo.Find($"WHERE UserID = {currentUser.UserID}");

    db.BeginTransaction();

    try
    {
        if (!user.Any())
        {
            repo.Insert(dataRecord);
            db.Commit();
        }
        else
        {
            string query = string.Empty;
            if (token != null)
            {
                query = $"SET [LastUpdateDate] = \'{DateTime.Now}\', [LastToken] = \'{token}\' WHERE [UserID] = {currentUser.UserID}";
            }
            repo.Update(query);
        }
    }
    catch (Exception ex)
    {
        db.RollbackTransaction();
        Exceptions.ProcessModuleLoadException(this, ex);
    }
}

dataRecord 属于 class RegisterData。

我收到一个对象引用未设置为对象实例的错误。

如果我从事务块中取出更新,table 会更新为正确的数据,但错误仍然存​​在。

任何指导将不胜感激。

~斯科特

enter code hereFind方法接受数据库中对象的id,或者称其为数据库中table的主键值更好。按照下面的代码替换 Where 子句

var user = repo.Where(UserID == $"{currentUser.UserID}");