我可以从上下文初始化程序的种子方法中查询上下文

时间:2011-05-17 16:23:31

标签: ef-code-first entity-framework-4.1

我正在从一堆sql脚本初始化我的数据库。然后我想在添加更多数据时查询数据,以便外键关系匹配。然而在我的例子中,即使数据存在,“绘画”变量也总是为空。是否可以查询此种子方法中的数据?我是否必须提交数据?

class ArtConvergenceInitializer : DropCreateDatabaseIfModelChanges<ArtConvergence>
    {
        protected override void Seed(ArtConvergence context)
        {            

            var seedfilePath = System.Configuration.ConfigurationManager.AppSettings["PathToInitializationScript"].ToString();
            foreach(var file in System.IO.Directory.EnumerateFiles(seedfilePath,"*.sql"))
            {
                var sqlCommand = System.IO.File.ReadAllText(file);
                context.Database.ExecuteSqlCommand(sqlCommand);
                context.SaveChanges();
            }

            var painting = context.Mediums.Where(x => x.MediumType == "Painting" && x.SpecificMedium == null).FirstOrDefault();
            var oilOnCanvas = context.Mediums.Where(x => x.MediumType == "Painting" && x.SpecificMedium == "oil on canvas").FirstOrDefault();              

        }

1 个答案:

答案 0 :(得分:0)

一旦使用直接SQL脚本,编写SQL脚本应该不会太难,这将使用现有外键正确插入数据。我做了很多次。将初始化逻辑保持在一起。