将IDbConnectionFactory注入Service类

时间:2013-03-05 14:14:01

标签: ormlite-servicestack

我今天开始使用ServiceStack。所以,让我知道我做错了什么。

我正在尝试将Db注入我的Service类,我正在使用此代码

[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);
    }
}

有两个问题: 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注入我的服务类?

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

听起来您与Sqlite存在平台不兼容问题,请确保您的计算机使用正确的Sqlite软件包。

至于service.SetAppHost(appHost)deprecated message表示使用service.SetResolver(appHost)作为 IAppHost 也会实现IResolver,所以请使用它。