ASP.net在Azure上的DB中种子数据多个副本

c# asp.net azure

115 观看

1回复

370 作者的声誉

我刚刚发布了一个带有数据库的网站,以使Azure启用了代码优先迁移。当我在Configuration.cs中发布种子方法时,运行并按预期很好地为数据库添加了种子。

几周后,我回到了该项目,并且所有种子数据已经重复了很多次。我认为种子方法在线时会多次被调用。

下面是我的Configuration.cs文件,我认为这是相当标准的。

到目前为止,要修复此问题,我刚刚使用SQL Server从azure上的db数据库中手动删除了所有表,在种子方法中,我更改.Add(c);.AddOrUpdate(c);启用自动迁移,创建了初始迁移,并准备重新进行迁移。 -更新和发布。

还有其他原因导致种子方法可能多次运行吗?我在想与云中的动态资源分配有关……?

    internal sealed class Configuration : DbMigrationsConfiguration<Trojan.Models.TrojanContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = true;
        }

        protected override void Seed(Trojan.Models.TrojanContext context)
        {
            GetCategories().ForEach(c => context.Categories.AddOrUpdate(c));
        }
        private static List<Category> GetCategories()
        {
            var categories = new List<Category> {
                        new Category
                        {
                            CategoryId = 1,
                            CategoryName = "Chip Life Cycle",
                        },
                        new Category
                        {
                            CategoryId = 2,
                            CategoryName = "Abstraction",
                        },
                        new Category
                        {
                            CategoryId = 3,
                            CategoryName = "Properties",
                        },
                        new Category
                        {
                            CategoryId = 4,
                            CategoryName = "Location",
                        },
                    };
            return categories;
        }
}
作者: Nick 的来源 发布者: 2016 年 1 月 3 日

回应 (1)


1

1167 作者的声誉

没错,如果不使用您的网站,可能会“处于睡眠状态”。此外,在Azure网站中,您对资源没有太多控制权。正确的方法是使用AddOrUpdate方法。

问候。

作者: Hernan Guzman 发布者: 05.01.2016 01:55
32x32