Skip to content

Instantly share code, notes, and snippets.

@kYann
Created April 13, 2018 13:16
Show Gist options
  • Save kYann/9fe0fd4e860049552439984789e35e8f to your computer and use it in GitHub Desktop.
Save kYann/9fe0fd4e860049552439984789e35e8f to your computer and use it in GitHub Desktop.
using Marten;
using Marten.Linq;
using System;
using System.Linq;
namespace DemoBugMarten
{
class User
{
public Guid Id { get; set; }
public string RealName { get; set; }
public string DisplayName { get; set; }
}
class MegaUser : User
{
}
public class UserMartenRegistry : MartenRegistry
{
public UserMartenRegistry()
{
this.For<User>().AddSubClass<MegaUser>();
}
}
class Program
{
static void Main(string[] args)
{
var megaUser1 = new MegaUser() { DisplayName = "Yann", RealName = "Yann Yann" };
var megaUser2 = new MegaUser() { DisplayName = "Robin", RealName = "Robin Robin" };
var megaUser3 = new MegaUser() { DisplayName = "Marten", RealName = "Marten Marten" };
var cs = "Host=localhost;Port=5432;Database=demo;User ID=postgres;Password=password";
var store = DocumentStore.For(_ =>
{
_.AutoCreateSchemaObjects = AutoCreate.CreateOrUpdate;
_.Connection(cs);
_.CreateDatabasesForTenants(c =>
c.ForTenant()
.CheckAgainstPgDatabase()
.WithOwner("postgres")
.WithEncoding("UTF-8")
.ConnectionLimit(-1));
_.Schema.Include<UserMartenRegistry>();
});
var session = store.OpenSession();
session.DeleteWhere<MegaUser>(_ => true);
session.Insert(megaUser1);
session.Insert(megaUser2);
session.Insert(megaUser3);
session.SaveChanges();
var query = session.Query<MegaUser>()
.Where(_ => _.DisplayName == "Yann" || _.DisplayName == "Robin");
var cmd = query.ToCommand(FetchType.FetchMany);
Console.WriteLine(cmd.CommandText);
var queryList = query.ToList();
foreach (var item in queryList)
{
Console.WriteLine(item.DisplayName);
}
Console.ReadLine();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment