获取 NullReferenceException IRepository.Insert 调用 DNN Evoq 8.2
Getting NullReferenceException IRepository.Insert Call DNN Evoq 8.2
我正在为我们的网站开发自定义模块。流程如下
- 客户点击特定页面
- 页面检测客户是否通过身份验证
- 否-强制login/register
- 是 - 继续
- 验证客户数据
- 从姊妹站点检索令牌和 ttl
- 在数据库中存储数据table
- 使用令牌将客户重定向到姊妹站点以登录
我有以下 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 here
Find
方法接受数据库中对象的id
,或者称其为数据库中table的主键值更好。按照下面的代码替换 Where 子句
var user = repo.Where(UserID == $"{currentUser.UserID}");
我正在为我们的网站开发自定义模块。流程如下
- 客户点击特定页面
- 页面检测客户是否通过身份验证
- 否-强制login/register
- 是 - 继续
- 验证客户数据
- 从姊妹站点检索令牌和 ttl
- 在数据库中存储数据table
- 使用令牌将客户重定向到姊妹站点以登录
我有以下 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 here
Find
方法接受数据库中对象的id
,或者称其为数据库中table的主键值更好。按照下面的代码替换 Where 子句
var user = repo.Where(UserID == $"{currentUser.UserID}");