在ASP.NET中使用SQL Server作为数据库,DB First方式使用EF(EntityFramework)进行开发和部署时的connectionString
来源:互联网 发布:java中合法关键字 编辑:程序博客网 时间:2024/06/05 17:29
这个问题困扰了我一个下午,项目采用的是VS2015,DB使用的是SQL Server2014.
在项目中生成EF时(*.edmx),因为是本机数据库,当时选择的是windows的连接方式,这样生成了connectionString在Web.Config中。
但是当把项目发布到本地后,发现DB连接不上了。
当时的connectionString如下:
<add name="masterEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=DESKTOP-MBBGC2M;initial catalog=master;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
说实话那些metadata为啥长那个样子,我真是不明白。因为这个配置,项目在发布到本机,从浏览器直接登陆时,发现无法连接到DB。于是一顿修改上述的字符串。
第一次,修改为这个样子:
<add name="masterEntities" connectionString="Data Source=127.0.0.1;Initial Catalog=master;uid=sa;pwd=sa;" />
把那些乱七八糟的东西都去掉了,结果发现连开发环境都连不上了,提示的错误是:
{"The connection string 'masterEntities' in the application's configuration file does not contain the required providerName attribute.\""}
然后把人家要的providerName加上去:
<add name="masterEntities" connectionString="Data Source=127.0.0.1;Initial Catalog=master;uid=sa;pwd=sa;" providerName="System.Data.SqlClient" />
还是有问题,错误提示是:
{"The context is being used in Code First mode with code that was generated from an EDMX file for either Database First or Model First development. This will not work correctly. To fix this problem do not remove the line of code that throws this exception. If you wish to use Database First or Model First, then make sure that the Entity Framework connection string is included in the app.config or web.config of the start-up project. If you are creating your own DbConnection, then make sure that it is an EntityConnection and not some other type of DbConnection, and that you pass it to one of the base DbContext constructors that take a DbConnection. To learn more about Code First, Database First, and Model First see the Entity Framework documentation here: http://go.microsoft.com/fwlink/?LinkId=394715"}
可见直接修改Web.config不靠谱。所以狠了狠心,把*.edmx从项目中删除,重新生成,这一次,服务器选择填写IP(127.0.0.1),连接方式使用SQL Server方式。填写好后,连接字符串自动被修改为下面的样子。注意,事先在Web.config中把原来的那个删除掉。
<add name="masterEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=127.0.0.1;initial catalog=master;user id=sa;password=sa;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" /></connectionStrings>
可见,那些乱哄哄的metadata配置还是有用的。更新后,在开发环境DB连接正常,数据可以保存到DB中。
然后把这个Web.config复制到发布文件夹。
再次测试,在发布环境也工作了。
这样,如果我把发布环境移到其他计算机上,应该只需要修改IP地址就可以了。
但愿我的经验可以给您节约些时间。
- 在ASP.NET中使用SQL Server作为数据库,DB First方式使用EF(EntityFramework)进行开发和部署时的connectionString
- 在C#中使用EF(EntityFramework)插入数据到DB的异常
- 在C#中使用EntityFramework(EF)生成实体进行存储过程的调用
- 在C#中使用EntityFramework(EF)生成实体进行存储过程的调用
- EF(EntityFramework)使用Code First连接MySQL数据库详解
- EF(EntityFramework)使用Code First连接Oracle数据库详解
- 如何使用EF来进行ASP.net的开发
- vs2013连接mysql数据库并使用EntityFramework技术db first
- asp.net vs2010中使用 ef code first 详解
- 在.NET Core类库中使用EF Core迁移数据库到SQL Server
- Asp.Net MVC 常用开发方式之EF Code First
- Asp.Net MVC 常用开发方式之EF Code First
- Asp.Net MVC 常用开发方式之EF Code First
- 实体框架 (EF) 入门 => 二、在全新的数据库中使用 Code First
- Angular5,使用EF和WEB API进行库存管理的ASP.NET Core CRUD
- ado.net EF与ado.net区别比较、在EF中使用执行sql语句
- ado.net EF与ado.net区别比较、在EF中使用执行sql语句
- 在vb.net中使用程序备份sql server数据库
- unity3D EasyAR 识别模型抖动解决方案
- Install Hadoop on local machine
- 设计模式(三)装饰者模式之java.io
- 爬取豆瓣电影数据
- 继承
- 在ASP.NET中使用SQL Server作为数据库,DB First方式使用EF(EntityFramework)进行开发和部署时的connectionString
- javascript DOM节点、元素
- MySQL 多表关联更新及删除
- 4.6第七周
- Ubuntu Numix 图标安装
- POJ
- poj 2823 单调队列 (求特定长度区间的最大最小值)
- 基于apache的tomcat负载均衡和集群配置
- leetcode 328 Odd Even Linked List C++