1

我正在使用带有 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()

有人可能会提出问题所在吗?

4

2 回答 2

1

嗯 - 我会说确保连接字符串存在(我将在接下来的几周内修复丢失连接字符串的错误消息)除此之外 - 这看起来像一个问题 - 你介意在 Github 上发布吗?

于 2009-07-24T17:05:49.790 回答
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是。

更正此问题后,更新运行良好。希望有人可以检查一下。

于 2010-01-15T17:33:12.667 回答