2009-07-24 75 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

更正後,更新運行良好。希望有人能檢查一下。