VS 2008, SqlCe 3.5
我正在尝试学习 EntityFramework,但无法让基本的插入和更新工作。当我包含 SqlCe 数据库 (.sdf) 时,向导会创建 Test.edmx/designer.vb 文件。由此我创建了我的数据上下文,如下所示。表名称是用户。
我的实体类的语法似乎与网络上的示例有点不同。这有点令人困惑,我不知道为什么会这样。下面我展示了两种不同的 Insert 方法,这两种方法都在 .SaveChanges 行上给出了异常:
An error occurred while updating the entries. See the InnerException for details.
{“SQL Server Compact 不支持服务器生成的键和服务器生成的值。”}
另外,更新方法我真的不知道在缺失的部分中要写什么。非常高兴在这些问题上获得一些帮助...
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
那么按照这个微软 TechNet 文章 http://rlm.cc/hN5Fhf他们这样说:
使用实体框架时,
实体的密钥可以标记为服务器
生成的。这使得数据库
为键生成一个值
插入或实体创建。
此外,零个或多个属性
实体的可以被标记为
服务器生成的值。了解更多
信息,请参阅商店生成
实体框架中的模式主题
文档。
SQL Server Compact 不支持
具有服务器生成的密钥的实体或
与实体一起使用时的值
框架,虽然实体
框架允许您定义实体
使用服务器生成的密钥的类型或
价值观。数据操作操作
具有服务器生成的实体
值抛出“不支持”
例外。
但您确实有几个选择,您可以使用 UNIQUEIDENTIFIER,也可以生成您自己的 bigint/int 类型的密钥。最佳解决方案是读取该表中的当前 ID 并将其增加 1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)