tnblog
首页
登录

解决:基础提供程序在 Open 上失败,EF无法生成实体问题

1144人阅读 2019/5/19 22:21 评论:1 手机 收藏 关注
分类: 学习中的问题

在学校图书馆的电脑上安装VS2013和SQL R2后,

调试项目报错:基础提供程序在 Open 上失败

怀疑是数据库的问题,然后删除数据库模型后

新建数据库模型,提示以下 错误。

发现是SQL安装时,服务器名是DESKTOP-TRRPA6E\SQLEXPRESS,不是“.”,改为相同即可。


成功新建数据库模型后,发现Model1.tt中并没有生成实体,


同时Model1.Context,cs里只有一串报错的英文,如下图所示


在Model1.edmx中又有数据库中的表的结构:


然后怀疑是数据库模型添加错误的原因,故又重新添加,添加时查看了表,是没有异常的


添加成功后并重新生成解决方案后问题并没有解决,接下来就怀疑是Web.config配置中,数据库连接错误的原因,

但将配置文件中连接数据库的代码修改后,

 <connectionStrings>
    <add name="HMRAEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DESKTOP-TRRPA6E\SQLEXPRESS;initial catalog=HMRA;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    <add name="HMRAEntities1" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DESKTOP-TRRPA6E\SQLEXPRESS;initial catalog=HMRA;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    <add name="HMRAEntities2" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=DESKTOP-TRRPA6E\SQLEXPRESS;initial catalog=HMRA;user id=sa;password=123456;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>


问题依旧。之后发现是在添加数据库模型时,没有选择EF生成器。

解决方法:

在Model1.edmx中,右击——选择添加代码生成项

 

选择C#——EF.5X生成器


 

再将名称修改为:Model1.tt

替换掉原来的Model1.tt

 然后问题就完美解决了。


Model1.Context,cs中代码生成了,


Model1.tt中的实体也有了。


第一次写,不足之处还望多多指正!

感谢!



更新:

项目调试中,又出现这个问题

同时数据库模型是没有任何问题,该有的东西都有。

后检查发现是Web.config配置文件中,与数据库连接的服务器名不一样

将Web.config中连接数据库服务器名与数据库一致即可。

评价
我没有个性,不需要签名
文章
6
粉丝
16
评论
8
分类
16
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}