【问题标题】:Error while connecting to database in code-first Entity Framework在代码优先实体框架中连接到数据库时出错
【发布时间】:2015-06-22 13:39:49
【问题描述】:

当上下文尝试使用实体框架的代码优先方法连接到数据库时,我收到以下错误消息

System.Data.Entity.DbContext' 不包含“System”的定义,并且找不到接受“System.Data.Entity.DbContext”类型的第一个参数的扩展方法“System”(您是否缺少使用指令还是程序集引用?)

代码:

public class Context : DbContext, IDisposable
{
    public Context() : base("EcommConnectionString")
    {
    }

    public List<Entities.RLI_State> States { get; set; }
    public List<Entities.RLI_Product> Products { get; set; }
    public List<Entities.RLI_StateProduct_List> StateProductList { get; set; }
}

这是我在web.config中定义的连接字符串:

<appSettings>
    <add key="EcommConnectionString" 
         value="data source=localhost;initial catalog=tempdb;integrated security=SSPI" />
</appSettings>

【问题讨论】:

  • 首先,DbContext 已经实现了 IDisposable,所以你不需要它。其次,您的 List&lt;&gt; 属性可能应该由 DbSet&lt;&gt; 代替。
  • 另外,你从哪里得到这个错误?你能显示那个代码吗?看起来你在某处有一些代码写着context.System(),这显然是不正确的。
  • 感谢大卫,在做了这两项更改后,错误已经消失,但出现了一些新错误
  • 我可以找出那个错误。我可以标记你的答案。

标签: c# ef-code-first entity-framework-6


【解决方案1】:

这里有几个问题。

首先,DbContext 已经实现了 IDisposable,因此您不需要它。把它放在那里不是问题,但它是多余的。

其次,您的List&lt;&gt; 属性应该使用DbSet&lt;&gt;

public class Context : DbContext
{
    public Context() : base("EcommConnectionString")
    {
    }

    public DbSet<Entities.RLI_State> States { get; set; }
    public DbSet<Entities.RLI_Product> Products { get; set; }
    public DbSet<Entities.RLI_StateProduct_List> StateProductList { get; set; }
}

最后,正如@marc_s 所提到的,您的web.config 中的连接字符串应该在&lt;connectionStrings&gt; 元素中,而不是在&lt;appSettings&gt; 中:

<connectionStrings>
    <add name="EcommConnectionString" 
         connectionString="data source=localhost;initial catalog=tempdb;integrated security=SSPI" />
</connectionStrings>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    相关资源
    最近更新 更多