【发布时间】:2011-07-22 08:25:26
【问题描述】:
我正在尝试复制 MSDN 上的示例。我正在使用 ASP.NET 和 EF 4.1(CTP?)。我已经使用 NuGet 安装了 EntityFramework 包。
我收到此错误:The provider did not return a ProviderManifestToken string ...
并且永远不会创建数据库。
这是我的连接字符串:
<add name="HospitalContext"
connectionString=
"data source=.\SQLExpress;initial catalog=NewTestDB;integrated security=True;"
providerName="System.Data.SqlClient"/>
这是我的代码:
var pat = new Patient { Name = "Shane123132524356436435234" };
db.Patients.Add(pat);
var labResult = new LabResult { Result = "bad", Patient = pat };
int recordAffected = db.SaveChanges();
这是我的上下文:
public class HospitalContext : DbContext
{
static HospitalContext()
{
Database.SetInitializer(new HostpitalContextInitializer());
}
public DbSet<Patient> Patients { get; set; }
public DbSet<LabResult> LabResults { get; set; }
}
public class HostpitalContextInitializer :
DropCreateDatabaseIfModelChanges<HospitalContext>
{
protected override void Seed(HospitalContext context)
{
context.Patients.Add(new Patient { Name = "Fred Peters" });
context.Patients.Add(new Patient { Name = "John Smith" });
context.Patients.Add(new Patient { Name = "Karen Fredricks" });
}
}
这是一个完全修补的 SQL 2008 系统,带有 VS 2010 SP1。
【问题讨论】:
-
似乎在将 [Key] 添加到模型后,它可以解决该问题。我还有另一个问题,但这可能已经解决了。
-
另外,可能是我在连接字符串中添加了“Intergrated security=true”...
-
我在使用
SqlServerCe.Entity.dll时遇到了同样的异常 -
出于对可能引发此异常的内容的兴趣 - 我花了 20 分钟盯着必须与上下文名称匹配的连接字符串名称中的错字。