此行导致异常:
var query = from customer in ctx.Customers select customer;
例外:
EntityFramework.dll中出现未处理的“System.Data.Entity.Core.ProviderIncompatibleException”类型异常
从数据库获取提供程序信息时发生错误。这可能是由实体框架使用不正确的连接字符串引起的。检查内部异常以获取详细信息,并确保连接字符串正确。
来自Database.Connection.ConnectionString
的连接字符串:
Data Source=.\SQLEXPRESS;Initial Catalog=Customer.CustomersContext;Integrated Security=True;MultipleActiveResultSets=True
App.config
:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v11.0" />
</parameters>
</defaultConnectionFactory>
</entityFramework>
<connectionStrings>
<add name="Customer.CustomersContext" providerName="System.Data.SqlClient" connectionString="Data Source=(localdb)\Projects;Initial Catalog=master;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False" />
</connectionStrings>
</configuration>
Context
上课:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;
namespace Customer
{
class CustomersContext : DbContext
{
public CustomersContext() : base("Customer.CustomersContext")
{
System.Console.WriteLine(Database.Connection.ConnectionString);
}
public DbSet<CustomerDb> Customers { get; set; }
public DbSet<Contact> Contacts { get; set; }
}
}
你可以看到我甚至试图将连接字符串名称从app.config
传递给上下文构造函数(应该使用localdb),但打印的连接字符串仍然是SQLExpress
。
答案 0 :(得分:1)
看看this。如果您使用的是localdb,则需要相应地更改连接字符串。所以,你的连接字符串应该是
Data Source=(localdb)\v11.0;Integrated Security=true;AttachDbFileName=C:\Path-to-your-database.mdf