我正试图在VS2012中测试ServiceStack for MVC 4应用程序:
(PM> Install-Package ServiceStack.Host.Mvc)
但是,即使遵循了MvC的特殊说明,我也会立即在构建时遇到以下3个错误。
非泛型方法'ServiceStack.ContainerTypeExtensions.Register(Funq.Container,object,System.Type)'不能与类型参数一起使用
无法将lambda表达式转换为'ServiceStack.Data.IDbConnectionFactory'类型,因为它不是委托类型
当前上下文中不存在名称“SqlServerDialect”
它们都与AppHost.cs
// Requires ConnectionString configured in Web.Config
var connectionString = ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString;
container.Register<IDbConnectionFactory>(c =>
new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider));
答案 0 :(得分:2)
检查以确保依赖包在您的引用中并在必要时使用。
<dependency id="WebActivator" version="1.5" />
<dependency id="ServiceStack.Mvc" version="4.0" />
<dependency id="ServiceStack.Server" version="4.0" />
<dependency id="ServiceStack.OrmLite.SqlServer" version="4.0" />
拉出的列表
答案 1 :(得分:2)
任何示例服务都没有使用该代码,因此您可以将其注释掉,例如:
//container.Register<IDbConnectionFactory>(c =>
// new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider));
但是如果您想将SqlServer与ServiceStack的OrmLite一起使用,您可以从NuGet安装它:
PM> Install-Package ServiceStack.OrmLite.SqlServer
否则,您可以安装首选的RDBMS解决方案,例如对于PostgreSQL,请安装:
PM> Install-Package ServiceStack.OrmLite.PostgreSQL
您可以将其更改为使用PostgreSQL提供程序,例如:
container.Register<IDbConnectionFactory>(c =>
new OrmLiteConnectionFactory(connectionString, PostgreSqlDialect.Provider));
然后,您可以在服务或剃刀视图中使用 Db 数据库,如:
在你的AppHost中:
using (var db = container.Resolve<IDbConnectionFactory>().Open()) {
Db.CreateTableIfNotExists<TestDb>();
}
在ServiceStack服务(或Razor Views)中使用 Db 属性:
public object Any(TestDb request)
{
Db.Insert(request);
return Db.SingleById<TestDb>(request.Id);
}
* TestDb可以是任何POCO,请求DTO等