1

今日から ServiceStack を使い始めました。だから、私が何か完全に間違っているかどうか教えてください。

このコードを使用しているServiceクラスにDbを注入しようとしています

[TestFixture]
public class UserServiceTests
{
    private UserService service;

    [SetUp]
    public void SetUp()
    {
        var appHost = new BasicAppHost();
        var dbFactory = new OrmLiteConnectionFactory(":memory:", false, SqliteDialect.Provider);
        appHost.Container.Register<IDbConnectionFactory>(dbFactory);
        service = new UserService();
        service.SetAppHost(appHost);
    }

    [Test]
    public void Calling_post_method_with_valid_User_saves_it_in_database()
    {
        var User = new User { Name = "Acme Limited" };
        var id = service.Post(User);
        Assert.AreEqual(1, id);
    }
}

2 つの問題があります: 1) 例外が発生しています:

Could not load file or assembly 'System.Data.SQLite, Version=1.0.82.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

これを修正する簡単な方法はありますか?また、テストに SQLite が本当に必要なのですか? Fake オブジェクトは利用できますか?

2) コンパイラは、service.SetAppHost(appHost) について警告しています。SetAppHost は廃止されました。SetAppHost を使用せずにサービス クラスに Db を挿入するにはどうすればよいですか?

何か案は?

4

1 に答える 1

1

Sqlite にプラットフォームの非互換性の問題があるようです。マシンに適した Sqlite パッケージを使用していることを確認してください。

非推奨のメッセージについてはservice.SetAppHost(appHost)IAppHostも実装されているので使用するように指示されているので、それを使用してください。service.SetResolver(appHost)IResolver

于 2013-03-05T15:23:50.063 に答える