Skip to content

Instantly share code, notes, and snippets.

@gistlyn
Last active June 22, 2019 21:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gistlyn/faf62da8b8ef30849506631025a5d06c to your computer and use it in GitHub Desktop.
Save gistlyn/faf62da8b8ef30849506631025a5d06c to your computer and use it in GitHub Desktop.
Configure AppHost to use OrmLite with PostgreSQL
dotnet add package ServiceStack.OrmLite.PostgreSQL
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using ServiceStack;
using ServiceStack.Data;
using ServiceStack.DataAnnotations;
using ServiceStack.OrmLite;
namespace MyApp
{
public class MyTable
{
[AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
}
public class ConfigureDb : IConfigureServices, IConfigureAppHost
{
IConfiguration Configuration { get; }
public ConfigureDb(IConfiguration configuration) => Configuration = configuration;
public void Configure(IServiceCollection services)
{
services.AddSingleton<IDbConnectionFactory>(new OrmLiteConnectionFactory(
Configuration.GetConnectionString("DefaultConnection")
?? "Server=localhost;User Id=test;Password=test;Database=test;Pooling=true;MinPoolSize=0;MaxPoolSize=200",
PostgreSqlDialect.Provider));
}
public void Configure(IAppHost appHost)
{
appHost.GetPlugin<SharpPagesFeature>()?.ScriptMethods.Add(new DbScriptsAsync());
using (var db = appHost.Resolve<IDbConnectionFactory>().Open())
{
if (db.CreateTableIfNotExists<MyTable>())
{
db.Insert(new MyTable { Name = "Seed Data for new MyTable" });
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment