我们有一个按日期和时间组织数据的事件系统。我们经常将旧事件中的数据作为启动器复制到新事件,然后进行修改。
这就是我们在Linq所做的事情:
这会产生大量的数据库调用。它至少包含在交易中。
这是SQL中的语句。有没有什么方法可以使Linq在没有嵌入SQL的情况下有效?
insert into targetTable (eventID, two, three, four five)
select @newEventId as eventID, two, three, four, five
from targetTable
where eventid = @eventid
答案 0 :(得分:2)
不,你不能使EF代码更有效率。这是EF的工作方式。如果您希望将SQL封装到存储过程中,请将存储过程映射到EF设计器并调用该SP。
如果无法创建存储过程,则直接执行SQL。您可以使用:
ObjectContext.ExecuteStoreCommand(...)
此方法仅适用于EF4。
答案 1 :(得分:1)
为了保持高效,您需要将SQL放入存储过程,然后将该存储过程添加到实体数据模型中。