为什么实体框架在Web服务器上出现此错误?

时间:2013-07-21 03:21:19

标签: c# frameworks entity umbraco

我正在尝试使用Entity Framework从进入sqlserver数据库的webform输入向数据库添加记录。 一切都在当地很好。

我使用webmatrix将我的站点发布到我的远程服务器,在远程服务器上使用所有数据成功重建了网站和我的本地数据库版本。

但是,当需要将记录添加到数据库时,它会在我设法跟踪到ctx.Students.Add行的远程服务器上出错。

        using (var ctx = new HDPS_SchoolDataEntities())
        {
            SchoolDataModel.Student temp = new SchoolDataModel.Student();

            temp.Name = this.FirstName;
            temp.Surname = this.Surname;
            temp.Parents = this.Parents;

            ctx.Students.Add(temp);
            ctx.SaveChanges();
        }

我发现我的本地版本和远程服务器上不起作用的版本之间没有任何区别。 web.config似乎按预期配置,所有必要的dll都在我的bin文件夹中,但它只能在远程服务器上运行...任何想法可能出错?

哎呀忘了错误信息!

修改

安装.net 4.5并将连接模式从Windows身份验证更改为SQL身份验证后,错误现在变为:

如果在Code First模式下使用,使用T4模板为Database First和Model First开发生成的代码可能无法正常工作。要继续使用Database First或Model First,请确保在执行应用程序的配置文件中指定了Entity Framework连接字符串。要使用从Database First或Model First生成的这些类,使用Code First添加任何其他配置,使用属性或DbModelBuilder API,然后删除引发此异常的代码。

网络服务器上的所有内容都应该相同,因为整个网站被复制,但它在本地工作正常,所以不确定问题是什么......

好的,我在这个网页的帮助下解决了这个问题

http://blog.oneunicorn.com/2012/02/26/dont-use-code-first-by-mistake/

简而言之,似乎webmatrix在上传到服务器时不包含连接字符串的元数据部分,因此没有引用包含将类映射到数据库表的所有信息的EDMX文件导致对框架的任何查询失败。

一旦我将Entity Framework向导生成的原始连接字符串粘贴到服务器上,一切正常。

2 个答案:

答案 0 :(得分:0)

根据评论中给出的错误,听起来您无法连接到数据库。检查您的连接字符串,用户名和密码。如果这些是正确的,请确保您的数据库设置允许来自您的服务器IP地址的连接。

答案 1 :(得分:0)

好的,我在这个网页的帮助下解决了这个问题

http://blog.oneunicorn.com/2012/02/26/dont-use-code-first-by-mistake/

似乎webmatrix在上传到服务器时不包含连接字符串的元数据部分,因此没有引用包含将类映射到数据库表的所有信息的EDMX文件,导致对框架的任何查询失败。

一旦我将Entity Framework向导生成的原始连接字符串粘贴到服务器上,一切正常。