我正在为我们的网站开发自定义模块。流程如下:
我有以下课程:
[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属于RegisterData类。
我得到的Object引用没有设置为对象错误的实例。
如果我从事务块中取出更新,则表会使用正确的数据进行更新,但仍会出现错误。
非常感谢任何指导。
〜斯科特
答案 0 :(得分:1)
enter code here
Find
方法获取数据库中对象的id
,或者更好地调用数据库中表的主键值。替换Where子句,如下面的代码
var user = repo.Where(UserID == $"{currentUser.UserID}");