虽然我尝试搜索很多帖子但我没有得到解决方案。 实体框架中的问题
我的连接字符串的名称是否应该与DB中提供的表名相同?
因为当我给连接字符串名称作为表名时,我没有发现任何错误,但是当我将DBContext作为我的连接字符串名称时,我得到了这个例外。
An exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll but was not handled in user code
Additional information: The connection string 'ProductContext' in the application's configuration file does not contain the required providerName attribute."
这是我的一段代码 型号:
public class Product
{
public int id { get; set; }
public string Name { get; set; }
public int Quantity { get; set; }
public DateTime EntryDate { get; set; }
}
ProductContext
public class ProductContext: System.Data.Entity.DbContext
{
public DbSet<Product> Products { get; set; }
public ProductContext() : base("ProductContext") { }
}
控制器:
public class ProductController : Controller
{
ProductContext db = new ProductContext();
// GET: Product
public ActionResult Index()
{
var product = db.Products.ToList();
return View(product);
}
的web.config:
<connectionStrings>
<add name="ProductContext" connectionString="Data Source=SHUTTHEFCUKUP;Initial Catalog=EntityFrameWork;Integrated Security=True;providerName=System.Data.EntityClient" />
</connectionStrings>
数据库表:
select * from Product
columns:
id,
name,
quantity,
date_entry
任何人都可以帮助我,因为我是新的实体框架。我错过了一些东西。
答案 0 :(得分:1)
更改连接字符串,如下所示,
<connectionStrings>
<add
name="ProductContext"
connectionString="Data Source=SHUTTHEFCUKUP;Initial Catalog=EntityFrameWork;Integrated Security=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>
providerName
是add
节点中的一个属性,它不属于connectionString
。
答案 1 :(得分:0)
当您的连接字符串以上下文命名时,它将自动用于该上下文。在这种情况下,您必须设置providerName
属性,以便Entity Framework知道要使用哪个数据库连接提供程序。
您还应该在Web.config文件中为Entity Framework提供相同名称的提供程序设置。这取决于您用于数据库的连接器,并应记录在其文档中。
在这种情况下,将providerName="System.Data.EntityClient"
添加到字符串中就足够了。