2009-07-24 9 views
1

Ich verwende Subsonic v3.0.0.3 mit den Linq Vorlagen. Ich bin versucht, einen Datensatz in einer SQL Server Express-Datenbank mit dem folgenden zu aktualisieren:Subsonic 3 - Update NullReferenceException

var db = new MyDB(Constants.Database); 
db.Update<Contact>() 
    .Set(d => d.FirstName == contact.FirstName) 
    .Where(d => d.Id == contact.Id) 
    .Execute(); 

ich ein NullReferenceException erhalte, wenn diese Zeile ausgeführt wird. Der Stack-Trace ist wie folgt:

at SubSonic.Query.Update.GetCommand() 
    at SubSonic.Query.Update.Execute() 

Jede Chance, dass jemand in der Lage sein kann vorschlagen, was das Problem ist?

Antwort

1

Hmm - ich würde sagen, um sicherzustellen, dass die Verbindungszeichenfolge vorhanden ist (ich werde die Fehlermeldung für fehlende Verbindungszeichenfolgen in den kommenden Wochen beheben), anders als das - das sieht wie ein Problem aus - würde es Ihnen etwas ausmachen bei Post Github?

+0

Es soll einen sinnvollen Fehler werfen, wenn die Verbindungszeichenfolge null ist: http://github.com/subsonic/SubSonic-3.0/blob/d258f4793f0fffae3cf0fa707fddbeb7f56b277c/SubSonic.Core/DataProviders/ProviderFactory.cs#L31 –

+0

Es scheint nicht ein Verbindungsstring-Problem sein - wie ich Daten aus der Datenbank mit ähnlichen Konventionen erhalten. Ich werde es sicher bei Github unterbringen. –

+0

Danke - Ich bekomme einige Buggy-Code-Beiträge, die ich genauer beobachten muss - auch brauche ich noch ein paar Tests :) –

1

habe ich ein einfaches Update, das mir gibt eine Nullreferenceexception

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

Nach dem Schritt in den Code, ich die Zeile in 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 
    }; 
    ... 

Die ColumnName = column.QualifiedName sollte ColumnName = column.Name gefunden werden .

Nach korrekter dieser, läuft das Update gut. Hoffe, jemand kann das überprüfen.