连接到代码优先实体框架中的数据库时出错
本文关键字:数据库 出错 框架 实体 代码 连接 | 更新日期: 2023-09-27 17:59:01
当上下文试图使用实体框架的代码优先方法连接到数据库时,我收到以下错误消息
System.Data.Entity.DbContext"不包含"System"的定义,也找不到接受类型为"System.Data.Eentity.DbContext"的第一个参数的扩展方法"System"(是否缺少using指令或程序集引用?)
代码:
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已经imlpements 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>