得到错误:
System.Data.ProviderIncompatibleException:从数据库获取提供程序信息时发生错误.这可能是由实体框架使用不正确的连接字符串引起的.
检查内部异常以获取详细信息,并确保连接字符串正确.
---> System.Data.ProviderIncompatibleException:提供程序未返回ProviderManifestToken字符串.
---> System.Data.SqlClient.SqlException:建立与SQL Server的连接时发生与网络相关或特定于实例的错误.服务器未找到或无法访问.验证实例名称是否正确,以及SQL Server是否配置为允许远程连接.(提供程序:SQL网络接口,错误:25 - 连接字符串无效)
尝试做的时候我得到了同样的错误 Add-Migration
这是我的连接字符串,我需要访问我的本地SQL服务器而不是SQLEXPRESS.
<connectionStrings>
<add name="ReaderInsightDbContext"
connectionString="data source=localhost\MSSQLSERVER;
initial catalog=ReaderInsight;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
我的DB位于:
C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
Run Code Online (Sandbox Code Playgroud)
所以我的实例是MSSQLSERVER.不确定发生了什么.它首先工作正常,但在我改变我的代码以使用UOW模式后,这种情况正在发生.我还从EF 4.3升级到EF5.同样的问题.
我尝试了连接字符串中的数据源的许多变体,没有工作,这里有一些例子:
如果我这样做.\ SQLEXPRESS它的工作原理.
似乎直接覆盖EF中的SaveChanges以添加审计记录器.请参阅ApplyAuditLogging方法以设置下面的审计属性(创建,创建,更新,更新).
public override int SaveChanges()
{
var autoDetectChanges = Configuration.AutoDetectChangesEnabled;
try
{
Configuration.AutoDetectChangesEnabled = false;
ChangeTracker.DetectChanges();
var errors = GetValidationErrors().ToList();
if(errors.Any())
{
throw new DbEntityValidationException("Validation errors were found during save: " + errors);
}
foreach (var entry in ChangeTracker.Entries().Where(e => e.State == EntityState.Added || e.State == EntityState.Modified))
{
ApplyAuditLogging(entry);
}
ChangeTracker.DetectChanges();
Configuration.ValidateOnSaveEnabled = false;
return base.SaveChanges();
}
finally
{
Configuration.AutoDetectChangesEnabled = autoDetectChanges;
}
}
private static void ApplyAuditLogging(DbEntityEntry entityEntry)
{
var logger = entityEntry.Entity as IAuditLogger;
if (logger == null) …Run Code Online (Sandbox Code Playgroud)