我想使用现有数据库(SQL Server)使用Servicestack启动新项目.我非常喜欢并且还学习了复杂的servicstack教程.我想请求一些帮助,因为我正面临一些挑战,因为我是新手,我正在寻找示例/ tutorial让我从POCO开始使用现有的表映射.一个表和一个服务请求的非常基本的例子足以让我开始.
谢谢
首先要了解OrmLite功能,我建议您阅读OrmLite主页上的文档.
要在ServiceStack中开始使用OrmLite,首先要从NuGet安装首选的OrmLite提供程序,例如,要使用InMemory数据库,只需从NuGet安装Sqlite:
Install-Package ServiceStack.OrmLite.Sqlite.Mono
Run Code Online (Sandbox Code Playgroud)
*OrmLite.Sqlite.Mono支持Windows和Mono,对于仅限Windows的x86/x64 Sqlite,您可以使用OrmLite.Sqlite.Windows.对于SQL Server,请安装OrmLite.SqlServer.
然后,要在ServiceStack中使用OrmLite,您只需要使用要使用的RDBMS提供程序和连接字符串注册数据库连接工厂:
public void Configure(Container container)
{
container.Register<IDbConnectionFactory>(c =>
new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider));
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,OrmLite支持将1:1映射到RDBMS表的POCO ,因此一个简单的类如:
public class Simple
{
public int Id { get; set; }
public string Name { get; set; }
public int? Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
可以创建:
using (var db = container.Resolve<IDbConnectionFactory>().Open())
{
//Drops (if exists) and re-creates SimpleTable
db.DropAndCreateTable<Simple>();
}
Run Code Online (Sandbox Code Playgroud)
这将创建一个具有以下定义的RDBMS表:
CREATE TABLE "Simple"
(
"Id" INTEGER PRIMARY KEY,
"Name" VARCHAR(8000) NULL,
"Age" INTEGER NULL
);
Run Code Online (Sandbox Code Playgroud)
您可以进一步使用属性来自定义表的创建方式,例如:
[Alias("CustomTable")]
public class Simple
{
[AutoIncrement]
public int Id { get; set; }
[Required]
[StringLength(100)]
public string Name { get; set; }
[Alias("CustomAge")]
public int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这将生成以下SQL:
CREATE TABLE "CustomTable"
(
"Id" INTEGER PRIMARY KEY AUTOINCREMENT,
"Name" VARCHAR(100) NOT NULL,
"CustomAge" INTEGER NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
OrmLite还将继续在未来的API中使用自定义别名.
在ServiceStack中,您可以从基类中的ADO.NET Db连接访问OrmLite Service.由于OrmLite表只是POCO,如果您希望将它们重新用作请求DTO(尽管建议使用特定于目的的请求DTO).
例如,Simple如果Id提供了此ServiceStack Service,则返回单行,否则返回所有Simple条目:
public class MyServices : Service
{
public object Any(Simple request)
{
return request.Id != default(int)
? Db.SingleById<Simple>(request.Id)
: Db.Select<Simple>();
}
}
Run Code Online (Sandbox Code Playgroud)
大多数ServiceStack示例项目都使用OrmLite,为了开始,我建议首先通过这些记录良好的示例:
| 归档时间: |
|
| 查看次数: |
5918 次 |
| 最近记录: |