如果存在-UPDATE-else-INSERT 与 Linq-to-Entities?

Posted

技术标签:

【中文标题】如果存在-UPDATE-else-INSERT 与 Linq-to-Entities?【英文标题】:If-exists-UPDATE-else-INSERT with Linq-to-Entities? 【发布时间】:2010-04-19 10:16:48 【问题描述】:

有没有办法使用 Entities 和 LinQ 编写相同的 SQL 原子指令?

如果存在 (SELECT * FROM MyTable WHERE ID = @Id) 更新 MyTable SET 名称 = @name 别的 插入 MyTable (@Id, @name)

或者您是否需要从 EF 中调用存储过程?

【问题讨论】:

【参考方案1】:

实体框架跟踪对象的生命周期:

如果对象是从查询中初始化的,框架会理解数据库中应该存在一条记录,并在将更改推送回数据库时执行UPDATE。 如果对象是在代码中初始化的,框架会将其理解为“新”对象,并在将更改推送到数据库时执行INSERT

如果您希望调用一条 SQL,无论是否需要 INSERTUPDATE 操作,您都必须指定一个存储过程。

【讨论】:

以上是关于如果存在-UPDATE-else-INSERT 与 Linq-to-Entities?的主要内容,如果未能解决你的问题,请参考以下文章

Shell与if相关参数

如果节点与 Xpath 一起存在,则修改属性?

如果值与预期不同,则查找文件类型并验证是不是存在替换行

Ansible:在行尾插入字符串,但前提是字符串不存在或/与更改值(如果存在)

如果不存在,则通过将 spring Jpa 与 hibernate 一起使用来创建模式

异常处理 - 如果与原始文件名存在,则使用另一个文件名写入文件