繁体   English   中英

EF Code First部署gremlins

[英]EF Code First deployment gremlins

在为所有先前的项目首先使用DB之后,我现在正在尝试“代码优先”。 我已经在web.config编辑了连接字符串,以使用“ user id = ...; password = ...”,魔术发生的非常漂亮; 数据库模式已生成! 但:

  1. 我在Configuration类中精心创建的种子数据未插入。 在我的开发环境中,当我运行update-database ,种子数据运行良好。
  2. 第一次尝试创建新的Db Context对象以运行查询时,网站崩溃,并且我在应用程序日志中看到一条错误消息,该消息试图使用App Pool身份连接到Sql。 我的连接字符串未使用集成安全性。 为什么会这样呢?

您可以点击此链接 或者,这对我有用。 这是我的.config文件中的连接字符串:

<connectionStrings>
    <add name="ConnectionStringName" connectionString="data source=dataSource;initial catalog=initialCatalog;user id=userName;password=password;MultipleActiveResultSets=True;App=AppName" providerName="System.Data.SqlClient" />
  </connectionStrings>

这是初始化:

public class SchoolDBInitializer : DropCreateDatabaseAlways<SchoolDBContext>
    {
        protected override void Seed(SchoolDBContext context)
        {
            IList<Standard> defaultStandards = new List<Standard>();

            defaultStandards.Add(new Standard() { StandardName = "Standard 1", Description = "First Standard" });
            defaultStandards.Add(new Standard() { StandardName = "Standard 2", Description = "Second Standard" });
            defaultStandards.Add(new Standard() { StandardName = "Standard 3", Description = "Third Standard" });

            foreach (Standard std in defaultStandards)
                context.Standards.Add(std);

            base.Seed(context);
        }
    }

这是上下文:

public class SchoolContext : DbContext
{
    public SchoolContext()
        : base("SchoolDBConnectionString")
    {
        Database.SetInitializer<SchoolContext>(new SchoolDBInitializer<SchoolContext>());
    }

    public DbSet<Student> Students { get; set; }
    public DbSet<Standard> Standards { get; set; }
}

这也是一个很好的链接

好的,其中一部分是“ D'oh!”,一部分不是那么多。

  1. 该答案所示 ,种子数据需要显式调用。
  2. 连接字符串...好吧,我确实设置了连接字符串,但是有人在没有引起我注意的情况下将其改回了。 重置连接字符串以使用用户名和密码,一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM