【问题标题】:Trouble deploying EF CodeFirst to server将 EF Code First 部署到服务器时遇到问题
【发布时间】:2013-04-23 16:27:28
【问题描述】:

我有一个最初使用 LocalDb 的 CodeFirst Web 应用程序。我将连接字符串更改为:

<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=.\SqlExpress;Initial Catalog=aspnet-BatchFindings;Integrated Security=True" />

我使用服务器资源管理器创建了相应的数据库。

我正在使用 WebDeploy 发布到运行 IIS8 的 Windows Server 2012 实例。

发布后,我无法使用该应用程序;它没有数据库的权限。然后我将身份更改为用户帐户,现在我没有收到数据库错误。除了应用程序似乎没有将任何数据保存到数据库中。我完全不知所措 - 感谢任何帮助!

回顾: 实体框架,代码优先 Web 部署到 IIS 8 自定义应用程序池,身份设置为用户帐户

数据未存储在数据库中。

编辑:我希望能够简单地使用 Web Deploy 并让它使用自己的数据库(因此它不会从我的数据库中获取测试数据),但这太令人沮丧了!我正在发布,连接字符串应该可以工作,不知道我哪里出错了。

【问题讨论】:

标签: asp.net-mvc entity-framework sql-server-express webdeploy


【解决方案1】:

愚蠢的问题,但您是否在数据操作后调用 DbContext SaveChanges() 方法 - 数据保存在测试时有效?

您还可以在测试(调试)和部署(发布版本)时使用不同的 web.config 文件。

【讨论】:

    【解决方案2】:

    所以我无意中找出了它没有保存的原因。出于某种原因,在我的测试环境中一切正常,但是当它被推出时,我需要添加以下行:

    db.Entry(obj).State = System.Data.EntityState.Added;
    

    我查看了该教程,该教程似乎可以正常工作,直到它进入 Grant.sql 文件。 Visual Studio 中没有连接选项。

    在这种情况下,为了让数据库正常工作,我最终所做的是将我的应用程序池设置为在我为此目的创建的用户身份下运行,同时将加载用户配置文件设置为 True。您也可以作为 LocalSystem 运行(只要创建以下文件夹:C:\Windows\SysWOW64\config\systemprofile\Desktop - 这会诱使系统认为 LocalSystem 帐户是交互式的)。

    【讨论】:

      猜你喜欢
      • 2019-09-23
      • 2017-06-03
      • 1970-01-01
      • 2022-01-25
      • 2011-06-03
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      相关资源
      最近更新 更多