Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SqlCe和EntityFramework进行插入和更新的语法_Sql_Database_Entity Framework - Fatal编程技术网

使用SqlCe和EntityFramework进行插入和更新的语法

使用SqlCe和EntityFramework进行插入和更新的语法,sql,database,entity-framework,Sql,Database,Entity Framework,我正在尝试学习EntityFramework,但无法让基本的插入和更新工作。包括SqlCe数据库(.sdf)时,向导将创建Test.edmx/designer.vb文件。由此我创建了我的datacontext,如下所示。表名为Users 我的实体类的语法似乎与web上的示例有所不同。这有点令人困惑,我不知道为什么会这样。下面我展示了两种不同的Insert方法,这两种方法都在.SaveChanges行中给出了异常: VS 2008, SqlCe 3.5 {“SQL Server Compact不

我正在尝试学习EntityFramework,但无法让基本的插入和更新工作。包括SqlCe数据库(.sdf)时,向导将创建Test.edmx/designer.vb文件。由此我创建了我的datacontext,如下所示。表名为Users

我的实体类的语法似乎与web上的示例有所不同。这有点令人困惑,我不知道为什么会这样。下面我展示了两种不同的Insert方法,这两种方法都在.SaveChanges行中给出了异常:

VS 2008, SqlCe 3.5
{“SQL Server Compact不支持服务器生成的密钥和服务器生成的值。”}

还有更新方法,我真的不知道该在缺少的部分写些什么。。我很高兴在这些问题上得到一些帮助

An error occurred while updating the entries. See the InnerException for details.
根据这个他们说:

使用实体框架时 实体的密钥可以标记为服务器 生成。这将启用数据库 为上的键生成值 插入或实体创建。 此外,零个或多个属性 实体的名称可以标记为 服务器生成的值。更多 有关详细信息,请参阅生成的存储 实体框架中的模式主题 文件

SQL Server Compact不支持 具有服务器生成的密钥或 与实体一起使用时的值 框架,尽管实体 框架允许您定义实体 使用服务器生成的密钥或 价值观计算机上的数据操作 已生成服务器的实体 值抛出一个“不受支持的” 例外


但您有两个选项,可以使用UNIQUEIDENTIFIER,也可以生成自己的类型为bigint/int的密钥。最好的解决方案是读取该表中的当前ID,并按上面的注释将其递增1;这在SQL CE 4.0中得到了修复

似乎是这意味着什么的复制品?如果它不能是标识键,这是否意味着我不能自动生成整数Id?我需要通过硬编码来创建并保持更新?您确实需要自己处理密钥创建。(顺便说一下,我不建议尝试“更新”它们)。SQLS Compact无法为您生成密钥,因此与存储生成有关的一切都将无法工作。使用上面链接中描述的GUID方法,或者切换到另一个数据库进行测试,免费数据库(如CE.NET 3.5中的SQLite)存在绑定。SQL Server Compact 4.0修复了此问题
Public Sub Insert(ByVal user As Users)
    Dim ctx As New TestDBEntities1(connection)
    ctx.Users.Context.AddObject("Users", user)
    ctx.Users.Context.SaveChanges()
End Sub

Public Sub Insert(ByVal user As Users)
    Dim ctx As New TestDBEntities1(connection)

    ctx.AddToUsers(user)
    ctx.SaveChanges()
End Sub


Public Sub Update(ByVal user As Users)
    Dim ctx As New TestDBEntities1(connection)
    Dim q = (From n In ctx.Users Where n.Id = user.Id Select n).Single

    ' How to update ??

    ctx.SaveChanges()
End Sub