在代码优先的实体框架

时间:2015-06-22 13:39:50

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

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

  

System.Data.Entity.DbContext'不包含'系统'的定义没有扩展方法' System'接受类型' System.Data.Entity.DbContext'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)

代码:

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>

1 个答案:

答案 0 :(得分:0)

这里有几个问题。

首先,DbContext已经实现了IDisposable,所以你不需要它。在那里出现问题不是问题,但这是多余的。

其次,您的List<>属性应改为使用DbSet<>

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中的连接字符串应该在<connectionStrings>元素中,而不在<appSettings>中:

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