2011-01-19 54 views
0

我正尝试使用实体框架与SQL Server Compact。我可以进行阅读,如:使用SQL Server Compact与实体框架时的UpdateException

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: 的Une ERREUR s'est produite的LOR德拉 准备去ladéfinitionde la commande。倾注加分, consultez l'exception interne。 ---> System.NotSupportedException:Lesclès et les valeursgénéréespar le serveur ne sont pas prises en charge par SQL Server Compact。

System.Data.SqlServerCe.SqlGen.DmlSqlGenerator.GenerateInsertSql(DbInsertCommandTree 树,列表参数的CommandType & 命令类型,布尔isLocalProvider) ... System.Data.SqlServerCe.SqlCeProviderServices.CreateCommand(DbProviderManifest providerManifest, DbCommandTree commandTree) ... System.Data.SqlServerCe.SqlCeProviderServices.CreateDbCommandDefinition(DbProviderManifest providerManifest,DbCommandTree commandTree) ... System.Data.Common.DbProviderServices.CreateCommandDe FINITION(DbCommandTree commandTree) ... System.Data.Common.DbProviderServices.CreateCommand(DbCommandTree commandTree) ... System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree) ---翅德拉跟踪德拉桩D'例外实习医生--- ... System.Data.Mapping.Update.Internal.UpdateTranslator.CreateCommand(DbModificationCommandTree commandTree) ... System.Data.Mapping.Update.Internal.DynamicUpdateCommand.CreateCommand(UpdateTranslator 翻译, Dictionary identifierValues,List`1 generatedValues) ... System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager,IEntityAdapter适配器)

谢谢:)

+3

那么这是一场猜测错误是什么的比赛,还是您想与我们分享,也许会得到答案? – 2011-01-19 14:11:53

+0

英文是这里的主要语言,请将错误文本翻译为英文。 – Andrey 2011-01-19 14:19:21

回答

1

SqlServer的紧凑型不支持服务器端的密钥生成。您必须在应用程序端生成密钥。因此明确地设置id。这里是例子。

context.Personnes.AddObject(new Personne() {id = lastId++, nom = "Test", prenom = "Test" }); 

您必须维护lastId。我上面写的代码只能在单线程中使用。

相关问题