我正在努力学习mvc.net。我创建了一个小项目,其中我使用了模型第一种方法。问题是我希望我的数据库显示在App_data文件夹中,因为我遵循了这篇文章:
http://www.dotnetfunda.com/articles/show/2182/how-to-embed-sql-database-in-appdata-folder
简而言之,我分离了数据库,然后将数据库包含在app_data文件夹中。现在我在更改连接字符串时遇到问题,以前我使用实体框架自动生成连接字符串,它就像:
<add name="KeepitrememberEntities"
connectionString="metadata=res://*/EDM.csdl|res://*/EDM.ssdl|res://*/EDM.msl;
provider=System.Data.SqlClient;provider connection string="
data source=mypcname\SQLEXPRESS;initial catalog=Keepitremember;
integrated security=True;MultipleActiveResultSets=True;App=EntityFramework""
providerName="System.Data.EntityClient" />
现在我将其更改为:
<add name="KeepitrememberEntities"
connectionString="Data Source=mypcname\SQLEXPRESS;
AttachDbFilename=|DataDirectory|Keepitremember.mdf;Integrated Security=True;
User Instance=True"
providerName="System.Data.SqlClient" />
当我执行代码并尝试使用表单保存值时,它会向我显示 EDM.Context.cs 中的错误,错误是:
类型的例外 'System.Data.Entity.Infrastructure.UnintentionalCodeFirstException' 发生在Emptymvc.dll中但未在用户代码中处理
附加信息:使用Database First的T4模板生成的代码 如果在Code中使用,则Model First开发可能无法正常工作 第一种模式。要继续使用Database First或Model First,请确保 在配置中指定了Entity Framework连接字符串 执行申请的文件。要使用这些类,那就是 从Database First或Model First生成,Code First添加任何 使用属性或DbModelBuilder API的其他配置 然后删除引发此异常的代码。
我现在需要做什么,任何解决方案!
感谢您的时间。
答案 0 :(得分:0)
据我所知,第一个连接字符串是Entity Framework连接字符串,第二个连接字符串是SQL Express连接字符串。在EF项目中,它们都应存在于web.config
DbContext
文件中以及代码生成模板用法中 - 因此它们不可互换(即,您不应将EF连接字符串更改为SQL Express一个,反之亦然)。
由于您已经更改了包含CSDL,SSDL和EXDL的EF连接字符串。 EF进入SQL Express所需的MSL信息,EF假定现有数据库元数据不再存在并尝试创建像Code First这样的新数据库,因此在执行UnintentionalCodeFirstException
后触发OnModelCreating
方法
而不是在web.config
中更改EF连接字符串,只需在与此相同的connectionStrings
元素上添加 SQL Express连接字符串(您可能需要在以后定义初始目录名称)所需的):
<connectionStrings>
<!-- SQL Express connection string -->
<add name="KeepitrememberConnection"
connectionString="Data Source=mypcname\SQLEXPRESS;Initial Catalog=Keepitremember;
AttachDbFilename=|DataDirectory|Keepitremember.mdf;Integrated Security=True;
User Instance=True"
providerName="System.Data.SqlClient" />
<!-- EF connection string -->
<add name="KeepitrememberEntities"
connectionString="metadata=res://*/EDM.csdl|res://*/EDM.ssdl|res://*/EDM.msl;
provider=System.Data.SqlClient;provider connection string="
data source=mypcname\SQLEXPRESS;initial catalog=Keepitremember;
integrated security=True;MultipleActiveResultSets=True App=EntityFramework""
providerName="System.Data.EntityClient" />
</connectionStrings>
注意:连接字符串名称应与相同,并且在EF模型生成模式中具有预定义名称。
相关问题:
Model First with DbContext, Fails to initialize new DataBase
Entity Framework cant use the DbContext, model being created