无法将EF Code First部署到服务器

时间:2013-04-23 16:27:29

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

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

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

我使用Server explorer创建了相应的数据库。

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

发布后,我无法使用该应用程序;它没有数据库的权限。然后我将身份更改为用户帐户,现在我没有收到数据库错误。除了应用程序似乎没有将任何数据保存到数据库。我完全失去了 - 任何帮助都表示赞赏!

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

数据未存储在数据库中。

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

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

我检查了教程,它似乎一直有效,直到它进入Grant.sql文件。 Visual Studio中没有选项可以连接。

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