mvc生成数据库是遇到的问题

在做mvc项目,使用codefirst时候,做好model以后,然后做controller是,add不上;

总会出现一串“Unable to retrieve metadata for"ContosoUniversity.Models.Student",无法...”

后来经过各种测试才发现是config里面的问题

下面贴出两串代码:

不可用的:

<add name="MovieDBContext"   
	      connectionString="Data Source=.;Initial Catalog=WLFSchool;
	Integrated Security=True;Pooling=False"providerName="System.Data.SqlClient" />


 

不可用的:

<add name="NewsDB"
          connectionString="DataSource=.\SQLEXPRESS;InitialCatalog=NewsTest;
	Trusted_Connection=true;" providerName="System.Data.SqlClient" />




会发现区别就在"Integrated Security=True;”和"Trusted_Connection=true"

引用博客园的一篇文章:

连接字符串中的integrated security=true的意思是什么

每次在讲到这个地方的时候,我都会提问。也经常有朋友回答不上来。

integrated security=true 的意思是集成验证,也就是说使用Windows验证的方式去连接到数据库服务器。这样方式的好处是不需要在连接字符串中编写用户名和密码,从一定程度上说提高了安全性。

那么到底是用哪一个Windows身份呢?很多朋友说,使用当前用户的身份吧?这个回答不能算错,至少在Windows应用程序中是这样的。但如果换成是ASP.NET应用程序,则就不是了。

如果是ASP.NET应用程序(网站或者服务),那么根据其运行宿主环境的不一样,可能会有差异

1. Windows XP :ASPNET帐号

2. Windows 2003或者以后的版本:NetWork Service帐号

知道这个原理之后,那么如果你准备用Integrated security=true,则需要授予这两个帐号对于数据库的访问权限。

但要注意一个问题(也是很多朋友疑惑的),就是在Visual Studio里面调试的时候,貌似又不是使用ASPNET这个帐号的。这是因为Visual Studio总是使用当前开发环境中,用户的Windows身份来发起请求的。

从下面的图可以看到这个差别。在VS里面调试,与在IIS中调试,访问的身份是不一样的

这个里面的真正问题和机制我还是没太搞清楚,希望哪位能一语点破;

我也继续查查,问题是什么。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值