我试图在SQLServerCompact中使用实体框架。我可以进行阅读,例如:
var context = new TestEntities();
foreach (var p in context.Personnes)
{
Console.WriteLine(p.prenom + " " + p.nom);
}但我不能执行插入:
var context = new TestEntities();
context.Personnes.AddObject(new Personne() {nom = "Test", prenom = "Test" });
context.SaveChanges();当我尝试这样做时,会引发一个UpdateException。Personne表只有3列:id (int, primary key), nom (varchar) and prenom (varchar).
这是我运行程序时的显示:
System.Data.EntityCommandCompilationException: System.Data.EntityCommandCompilationException: erreur s‘’est produite lors de la pr de la définition de la commande。加德·德拉克斯,特约实习生。
System.Data.SqlServerCe.SqlGen.DmlSqlGenerator.GenerateInsertSql(DbInsertCommandTree树,列表1& parameters, Boolean isLocalProvider) … System.Data.SqlServerCe.SqlGen.SqlGenerator.GenerateSql(DbCommandTree tree, List1和参数,命令类型& commandType,布尔isLocalProvider)…System.Data.SqlServerCe.SqlCeProviderServices.CreateCommand(DbProviderManifest providerManifest,DbCommandTree commandTree)…System.Data.SqlServerCe.SqlCeProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest,DbCommandTree commandTree)…System.Data.Common.DbProviderServices.CreateCommandDefinition(DbCommandTree commandTree)…System.Data.Common.DbProviderServices.CreateCommand(DbCommandTree commandTree)…System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree) -…System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree)…System.Data.Mapping.Update.Internal.DynamicUpdateCommand.CreateCommand(UpdateTranslator翻译器,字典2 identifierValues) … System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary2 identifierValues,清单1 generatedValues)…System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter适配器)
谢谢您:)
发布于 2011-01-19 14:18:28
SqlServer契约不支持服务器端密钥生成。您必须在应用程序端生成密钥。因此显式地设置id。举个例子。
context.Personnes.AddObject(new Personne() {id = lastId++, nom = "Test", prenom = "Test" });您必须维护lastId。我上面写的代码将只在单个线程中工作。
https://stackoverflow.com/questions/4736177
复制相似问题