Changing schema name on runtime - Entity Framework

前端 未结 6 642
梦谈多话
梦谈多话 2020-12-01 04:12

I need to change the storage schema of the entities on runtime. I\'ve followed a wonderful post, available here: http://blogs.microsoft.co.il/blogs/idof/archive/2008/08/22/c

6条回答
  •  庸人自扰
    2020-12-01 04:26

    I need import data from postgres database. It by default use schema "public". So I use Entity Framework CTP 4 "Code first". It by default use schema "dbo". To change it in runtime I use:

    public class PublicSchemaContext : DbContext
    {
        protected override void OnModelCreating(System.Data.Entity.ModelConfiguration.ModelBuilder builder)
        {
            builder.Entity().MapSingleType().ToTable("[public].[series_categories]");
        }
    
        public DbSet series_categories { get; set; }
    }
    

    It work for select, insert, update and delete data. So next test in pass:

    [Test]
            public void AccessToPublicSchema()
            {
                // Select
                var db = new PublicSchemaContext();
                var list = db.series_categories.ToList();
                Assert.Greater(list.Count, 0);
                Assert.IsNotNull(list.First().series_category);
    
                // Delete
                foreach (var item in db.series_categories.Where(c => c.series_category == "Test"))
                    db.series_categories.Remove(item);
                db.SaveChanges();
    
                // Insert
                db.series_categories.Add(new series_categories { series_category = "Test", series_metacategory_id = 1 });
                db.SaveChanges();
    
                // Update
                var test = db.series_categories.Single(c => c.series_category == "Test");
                test.series_category = "Test2";
                db.SaveChanges();
    
                // Delete
                foreach (var item in db.series_categories.Where(c => c.series_category == "Test2"))
                    db.series_categories.Remove(item);
                db.SaveChanges();
            }
    

提交回复
热议问题