修改EF Core插入和更新语句

时间:2018-05-14 09:15:25

标签: c# entity-framework-core ef-core-2.0

如何在EF Core中修改生成的INSERT和UPDATE语句?

我想添加一些ID,理想情况下是SQL注释:

    UPDATE Task SET Name = 'Test' WHERE Id = 1
    -- correlationId: abcde12345

在查询中,我可以使用Linq做类似的事情:

var queryInternal = dbContext.Set<Task>().Where(t => t.Id == 1);
queryInternal.Where(e => correlationId == correlationId);

将生成包含我的相关ID的查询,而不会影响结果:

SELECT * FROM Task WHERE Id = 1 AND 'abcde12345' = 'abcde12345'

我尝试了什么:

在调用SaveChanges()之前,我可以访问已更改的实体。所以我尝试在那里设置值。

var changes = dbContext.ChangeTracker.Entries;
foreach (var item in changes)
{
    item.Property("correlationId").CurrentValue = correlationId;
}

但这需要模型上的实际属性和数据库中的列。

是否有其他方法可以在不影响结果的情况下向INSERT和UPDATE语句添加一些任意值?

0 个答案:

没有答案