我今天开始使用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注入我的服务类?
有什么想法吗?
答案 0 :(得分:1)
听起来您与Sqlite存在平台不兼容问题,请确保您的计算机使用正确的Sqlite软件包。
至于service.SetAppHost(appHost)
,deprecated message表示使用service.SetResolver(appHost)
作为 IAppHost 也会实现IResolver
,所以请使用它。