Code First连接字符串

时间:2016-02-09 13:20:00

标签: entity-framework connection-string

我有一个错误:

  

类型' System.Data.Entity.Infrastructure.UnintentionalCodeFirstException'的例外情况发生在DataAccess.dll中但未在用户代码中处理   附加信息:上下文正在Code First模式中使用,其代码是从EDMX文件生成的,用于Database First或Model First开发。这将无法正常工作。要解决此问题,请不要删除引发此异常的代码行。如果您希望使用Database First或Model First,请确保Entity Framework连接字符串包含在启动项目的app.config或web.config中。如果要创建自己的DbConnection,请确保它是EntityConnection而不是其他类型的DbConnection,并将其传递给采用DbConnection的基本DbContext构造函数之一。

在DataAccess项目中,我有一个带有App.Config文件的EF 6,其中包含字符串:

<connectionStrings>  <add name="CVJobOnlineEntities"  connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model 1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=STEFAN-PC\SQLEXPRESS;initial catalog=CVJobOnline;integrated  security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" /> </connectionStrings>

在我的第二个项目中,这是我在WebConfig中的主要启动项目:

<connectionStrings>
<add name="CVJobOnlineEntities"
      providerName="System.Data.SqlClient"
      connectionString="Server=.\SQLEXPRESS;Database=CVJobOnline;Integrated Security=True;"/>

所以,显然我正在混合使用EDMX和CodeFirst conn字符串,但是,我需要它CodeFirst,因为我在我的SQL SERVER DB中加入了我的Identity表。

同样在我的DbContext中,我回忆起使用FirstCode(Model1.Context.cs)的基础:

 public partial class CVJobOnlineEntities : DbContext
{
    public CVJobOnlineEntities()
        : base("name=CVJobOnlineEntities")
    {
    }

1 个答案:

答案 0 :(得分:1)

您必须在应用程序的入口点仅指定一次连接字符串。如果DataAccess项目不可执行,则它不需要连接字符串。剪切&amp;将您的DataAccess项目中的连接字符串粘贴到应用程序入口点的Web配置文件中,覆盖旧的。

问题并非完全是混合两种类型的连接字符串,因为实体框架从未读过DataAccess的连接字符串。您的入口点配置中提供的配置在您的方案中是错误的,因为您使用的是模型优先而不是代码优先。