2009-09-01 10 views
2

原因、私は更新を呼び出す()メソッドは常にとNullReferenceExceptionをスローすることを発見しました。これは、3.0.0.3リリースに含まれているサンプルMVCダウンロードでも当てはまります。亜音速SimpleRepositoryアップデートは、亜音速の新しいSimpleRepositoryを研究するには、null参照の例外

アップデートを成功させる方法があるかどうか知りませんか?

例を示します。 ifステートメントは機能します。テーブルを追加してレコードを作成します。このコードをもう一度実行して、もう一度elseブロックに渡します。更新によって例外がスローされます。

var repo = new SimpleRepository("c", SimpleRepositoryOptions.RunMigrations); 

var user = repo.Single<User>(u => u.Email == "[email protected]"); 

if (user == null) 
{ 
    repo.Add(new User { Email = "[email protected]", Name = "Test" }); 
} 
else 
{ 
    user.Name = DateTime.Now.ToString(); 
    repo.Update(user); 
} 

public class User 
{ 
    public int Key { get; set; } 
    public string Name { get; set; } 
    public string Email { get; set; } 
} 

答えて

3

問題が見つかりました。 SubSonicソースにはUpdateルーチンに小さな欠陥があり、更新クエリオブジェクトのテーブルのリストに列名を問い合わせます。 Linqクエリは、Nameプロパティではなく、列のQualifiedNameプロパティを使用する必要がありました。クエリ設定(クエリの右側)は、完全修飾名を使用します。

私も亜音速のGitHubのサイト上での問題を提出の自由を取った:)

を興味のある方のために、問題は(クエリフォルダ内)Update.csであり、ライン229

変更この...これまで

var col= table.Columns.SingleOrDefault(
    x => x.Name.Equals(s.ColumnName, StringComparison.InvariantCultureIgnoreCase) 
); 

...

var col = table.Columns.SingleOrDefault(
    x => x.QualifiedName.Equals(
    s.ColumnName, StringComparison.InvariantCultureIgnoreCase 
) 
); 

を再構築し、あなたをしています 行ってもいい。

0

私もこの問題に遭遇しました。私は最新のSubSonicソースをダウンロードできましたが、問題はすでに修正されました。 SubSonic.Coreプロジェクトを開き、ビルドを行い、プロジェクトのリファレンスをSubSonic.Coreに置き換えてください。

ダウンロード最新のソースブーム http://github.com/subsonic/SubSonic-3.0

- リポジトリの更新が再び動作します!