Skip to content

Instantly share code, notes, and snippets.

@gistlyn
Last active November 10, 2020 13:34
Show Gist options
  • Save gistlyn/3ca519d6b039e142c84978e0cbb49b32 to your computer and use it in GitHub Desktop.
Save gistlyn/3ca519d6b039e142c84978e0cbb49b32 to your computer and use it in GitHub Desktop.
OrmLite Save API
using System;
using System.Collections.Generic;
using ServiceStack;
using ServiceStack.Text;
using ServiceStack.OrmLite;
using ServiceStack.OrmLite.Sqlite;
using ServiceStack.DataAnnotations;
var dbFactory = new OrmLiteConnectionFactory(":memory:", SqliteDialect.Provider);
var db = dbFactory.Open();
public class Artist {
public int Id { get; set; }
public string Name { get; set; }
[Reference] public List<Track> Tracks { get; set; }
public override string ToString() => Name;
}
public class Track {
[AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
public int ArtistId { get; set; }
public string Album { get; set; }
public int Year { get; set; }
public override string ToString() => Name;
}
db.CreateTable<Artist>();
db.CreateTable<Track>();
db.Save(new Artist {
Id = 1, Name = "Faith No More",
Tracks = new List<Track> {
new Track { Name = "Everythings Ruined", Album = "Angel Dust", Year = 1992 },
new Track { Name = "Ashes to Ashes", Album = "Album of the Year", Year = 1997 },
}
}, references:true);
var artist = db.SingleById<Artist>(1);
$"Artist: {artist.Dump()}".Print();
var tracks = db.Select<Track>();
$"Tracks: {tracks.Dump()}".Print();
var artistWithTracks = db.LoadSingleById<Artist>(1);
$"Artist with Tracks: {artistWithTracks.Dump()}".Print();
var track = new Track { Name = "The Gentle Art of Making Enemies", Album = "King for a Day", Year = 1995, ArtistId = 1 };
db.Save(track); // Inserts new Track
$"Inserted Track: {db.SingleById<Track>(track.Id).Dump()}".Print();
track.Name = "King for a Day... Fool for a Lifetime";
db.Save(track); // Updates existing Track
$"Updated Track: {db.SingleById<Track>(track.Id).Dump()}".Print();
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="System.Memory" version="4.5.4" targetFramework="net45" />
<package id="ServiceStack.Text" version="5.10.0" targetFramework="net45" />
<package id="ServiceStack.Client" version="5.10.0" targetFramework="net45" />
<package id="ServiceStack.Common" version="5.10.0" targetFramework="net45" />
<package id="ServiceStack.Interfaces" version="5.10.0" targetFramework="net45" />
<package id="ServiceStack.OrmLite" version="5.10.0" targetFramework="net45" />
<package id="ServiceStack.OrmLite.Sqlite.Windows" version="5.10.0" targetFramework="net45" />
</packages>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment