2009-07-24 97 views
1

我正在使用Subsonic v3.0.0.3与Linq模板。我试图在以下配置的SQL Server Express数据库更新记录:Subsonic 3 - 更新NullReferenceException

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() 

有人可能能够提出什么问题是什么机会?

回答

1

嗯 - 我会说确保连接字符串存在(我将在未来几周内修复缺少连接字符串的错误信息)除此之外 - 这看起来像一个问题 - 你会介意张贴在Github上?

+0

应该抛出一个有意义的错误,如果连接字符串为空:http://github.com/subsonic/SubSonic-3.0/blob/d258f4793f0fffae3cf0fa707fddbeb7f56b277c/SubSonic.Core/DataProviders/ProviderFactory.cs#L31 – 2009-07-24 21:28:39

1

我做了一个简单的更新,其中给我的NullReferenceException

FarmDB db = new FarmDB(); 
db.Update<UserInfo>().Set(x => x.phone == "13679178184").Where(x => x.name == "marship").Execute(); 

步入代码后,我发现了线查询/ 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.QualifiedNameColumnName = column.Name

更正后,更新运行良好。希望有人能检查一下。