我正在使用带有Linq模板的Subsonic v3.0.0.3。我正在尝试使用以下内容更新SQL Server Express数据库中的记录:
var db = new MyDB(Constants.Database);
db.Update<Contact>()
.Set(d => d.FirstName == contact.FirstName)
.Where(d => d.Id == contact.Id)
.Execute();
执行此行时,我收到NullReferenceException
。堆栈跟踪如下:
at SubSonic.Query.Update.GetCommand()
at SubSonic.Query.Update.Execute()
有人可能能够提出问题的原因吗?
答案 0 :(得分:1)
嗯 - 我想说要确保连接字符串存在(我将在未来几周修复缺失连接字符串的错误消息)除此之外 - 这看起来像一个问题 - 你介意在Github上发帖吗?
答案 1 :(得分:1)
我做了一个简单的更新,它给了我一个NullReferenceException
FarmDB db = new FarmDB();
db.Update<UserInfo>().Set(x => x.phone == "13679178184").Where(x => x.name == "marship").Execute();
进入代码后,我在Query / update.cs L186
中找到了这一行internal Setting CreateSetting(IColumn column, bool isExpression)
{
Setting s = new Setting
{
query = this,
ColumnName = column.Name,
ParameterName = (_provider.ParameterPrefix + "up_" + column.Name),
IsExpression = isExpression,
DataType = column.DataType
};
...
ColumnName = column.QualifiedName
应为ColumnName = column.Name
。
更正后,更新运行良好。希望有人可以检查一下。