Cannot Migrate/Load table with Discriminator.
Posted: Fri 19 Aug 2016 05:20
Now testing migrate to EntityFrameworkCore but...
1. Cannot migrate/generate table with Discriminator
2. Cannot load elements even if database exitsts.
Currently using dotConnect for SQLite v5.6.714 with EntityFrameworkCore 1.0.0.
---sample---
class Program
{
static void Main(string[] args)
{
{
DbContextOptionsBuilder builderDa = new DbContextOptionsBuilder();
builderDa.UseSQLite("DataSource = .test.db");
// builderDa.UseSqlite("DataSource = .test.db");
Context context = new Context(builderDa.Options);
context.Database.Migrate(); /* 1. Cannot migrate/generate database... */
//
context.Add(new EntityExt() { ExtData = "data" });
context.SampleEntity.Add(new EntityExt() { ExtData = "data2" });
context.SaveChanges();
//
context.SampleEntity.Load(); /* 2. Cannot load elements even if database exitsts ... */
}
}
}
public class Context : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<EntityBase>()
.HasDiscriminator()
.HasValue<EntityBase>("base")
.HasValue<EntityExt>("ext")
;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if( !optionsBuilder.IsConfigured)
{
// optionsBuilder.UseSQLite("DataSource=.test.db");
optionsBuilder.UseSqlite("DataSource=.test.db"); /* can generate, but not supports encryption... */
}
}
public Context()
{
}
public Context(DbContextOptions options)
: base(options)
{
}
public DbSet<EntityBase> SampleEntity { get; set; }
}
[Table("EntityBase")]
public class EntityBase
{
[Key]
public int Id { get; set; }
}
public class EntityExt : EntityBase
{
public string ExtData { get; set; }
}
1. Cannot migrate/generate table with Discriminator
2. Cannot load elements even if database exitsts.
Currently using dotConnect for SQLite v5.6.714 with EntityFrameworkCore 1.0.0.
---sample---
class Program
{
static void Main(string[] args)
{
{
DbContextOptionsBuilder builderDa = new DbContextOptionsBuilder();
builderDa.UseSQLite("DataSource = .test.db");
// builderDa.UseSqlite("DataSource = .test.db");
Context context = new Context(builderDa.Options);
context.Database.Migrate(); /* 1. Cannot migrate/generate database... */
//
context.Add(new EntityExt() { ExtData = "data" });
context.SampleEntity.Add(new EntityExt() { ExtData = "data2" });
context.SaveChanges();
//
context.SampleEntity.Load(); /* 2. Cannot load elements even if database exitsts ... */
}
}
}
public class Context : DbContext
{
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<EntityBase>()
.HasDiscriminator()
.HasValue<EntityBase>("base")
.HasValue<EntityExt>("ext")
;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if( !optionsBuilder.IsConfigured)
{
// optionsBuilder.UseSQLite("DataSource=.test.db");
optionsBuilder.UseSqlite("DataSource=.test.db"); /* can generate, but not supports encryption... */
}
}
public Context()
{
}
public Context(DbContextOptions options)
: base(options)
{
}
public DbSet<EntityBase> SampleEntity { get; set; }
}
[Table("EntityBase")]
public class EntityBase
{
[Key]
public int Id { get; set; }
}
public class EntityExt : EntityBase
{
public string ExtData { get; set; }
}