如果存在-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,无论是否需要 INSERT
或 UPDATE
操作,您都必须指定一个存储过程。
【讨论】:
以上是关于如果存在-UPDATE-else-INSERT 与 Linq-to-Entities?的主要内容,如果未能解决你的问题,请参考以下文章
Ansible:在行尾插入字符串,但前提是字符串不存在或/与更改值(如果存在)