西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页西西教程数据库教程 → LINQ to SQL 无法更新EntitySet的问题

LINQ to SQL 无法更新EntitySet的问题

相关软件相关文章发表评论 来源:本站整理时间:2010/11/30 11:40:18字体大小:A-A+

作者:佚名点击:462次评论:0次标签: LINQtoSQL SqlServer

  • 类型:数据库类大小:1.7M语言:英文 评分:5.0
  • 标签:
立即下载
无法更新 EntitySet“...”,因为它有一个 DefiningQuery,而 <ModificationFunctionMapping> 元素中没有支持当前操作的 <DeleteFunction> 元素。


出现上述问题的原因,往往是因为主键的关系。

在SqlServer中你允许设计一张没有主键标识(Primary key)的数据表,但是在定义entity class的属性时,必须至少包含一个的主键属性(IsPrimaryKey=true)。这不单是数据库设计标准的要求,DataContext对象会使用PrimaryKey属性值作为实体对象的唯一标识,用来进行实体对象的生命周期管理。(因此主键是必须的)


当 LINQ to SQL 保存对数据库所做的更改时,只会检索并持久保存您标识为列的那些成员。 不具有此属性的成员被假定为非持久的,且不会被提交以进行插入或更新。(这就是为什么当没有主键的时候,查询没有问题,而增删改会报错的原因!)


原因我们搞清楚了,可是在项目中有时候确实难免会有无主键,该如何解决呢?研究中。。。。

希望哪位朋友能分享答案。


又进一步试验了一下,发现组合主键还是可以用的。可见这个问题是你必须有主键,没有主键就会报错。这样的话,出现问题的时候还是少之又少的。

目前的权益之计就是如果真的要对这样的表进行增删改操作,就用存储过程去完成了。但总是在想难道linq就真的没有法子了吗?

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)