Ticket Hash: | eb0cada67419cb41d58f88265c4d93b8c19be8b9 | ||
Title: | DeleteDatabase method not supported | ||
Status: | Open | Type: | Feature_Request |
Severity: | Important | Priority: | Medium |
Subsystem: | LINQ | Resolution: | Under_Review |
Last Modified: |
2014-05-22 16:52:03 10.94 years ago |
Created: |
2014-05-22 04:21:49 10.94 years ago |
Version Found In: | 1.0.92.0 |
User Comments: | ||||
anonymous added on 2014-05-22 04:21:49:
I am trying to create a SQLite database using entity framework code first. The application is creating the database for the first time and then seeding the database. I create a SQLiteConnection and then pass the connection to a Context. In the constructor of the Context I call Database.SetInitializer<BloggingContext>(new DropCreateDatabaseAlways<BloggingContext>()); I get an exception that says the DeleteDatabase is not supported by the provider. The following are the supporting classes: namespace EntityFrameworkConsoleApplication1 { class Program { static void Main(string[] args) { var sb = new System.Data.SQLite.SQLiteConnectionStringBuilder(); sb.DataSource = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "test.db"); sb.ForeignKeys = true; sb.BinaryGUID = true; sb.DateTimeFormat = SQLiteDateFormats.ISO8601; sb.DateTimeKind = DateTimeKind.Local; sb.ToFullPath = true; var conn = new SQLiteConnection(sb.ConnectionString); using (var context = new BloggingContext(conn)) { context.Blogs.Add(new Blog { Name = "Yet Another Blog #1" }); context.SaveChanges(); var blogs = (from b in context.Blogs orderby b.Name select b).ToList(); } } } } using System.Data.Common; using System.Data.Entity; namespace EntityFrameworkConsoleApplication1 { [DbConfigurationType(typeof(MyConfiguration))] public class BloggingContext : DbContext { public BloggingContext(DbConnection c):base(c,true) { Database.SetInitializer<BloggingContext>(new DropCreateDatabaseAlways<BloggingContext>()); } public DbSet<Blog> Blogs { get; set; } } } namespace EntityFrameworkConsoleApplication1 { public class Blog { public int BlogId { get; set; } public string Name { get; set; } } } using System; using System.Data.Entity; using System.Data.Entity.Core.Common; using System.Data.SQLite; using System.Data.SQLite.Linq; using System.Reflection; namespace EntityFrameworkConsoleApplication1 { public class MyConfiguration : DbConfiguration { public MyConfiguration() { SetProviderFactory("System.Data.SQLite", SQLiteFactory.Instance); SetProviderFactory("System.Data.SQLite.EF6", SQLiteProviderFactory.Instance); Type t = Type.GetType( "System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"); FieldInfo fi = t.GetField("Instance", BindingFlags.NonPublic | BindingFlags.Static); SetProviderServices("System.Data.SQLite", (DbProviderServices)fi.GetValue(null)); } } } |