gpt4 book ai didi

c# - 如何使 EF 使用字符串连接构建更新 SQL?

转载 作者:太空狗 更新时间:2023-10-29 23:50:15 24 4
gpt4 key购买 nike

在我的 ASP.NET MVC 4/EF 5 web 应用程序的数据库中,我有一个带有 Comments 列的表,我想将新评论连接到该列。在传统的 T-SQL 中,我会写:

UPDATE MyTable SET Comments = 'Hi' + CHAR(13)+CHAR(10) + Comments WHERE ID = 2

我发现 EF 的方法 linq(uow + 存储库模式——我很遗憾),我必须首先查询 Comments 的当前值并将我的新评论添加到它前面:

StringBuilder displayComment = new StringBuilder();
var item = uow.MyRepos.Where(i => i.ID == 2);
item.Comments = displayComment.Append("Hi")
.Append(Environment.NewLine)
.Append(item.Comments)
.ToString();
uow.Save();

有没有什么方法可以在不需要查询数据库的情况下编写这个更新?我想以某种方式让 EF 生成上面的 t-sql。评论可能很长,我不在乎它包含什么。性能是一个问题。

提前致谢。

最佳答案

标准更新设置了字段,我假设您需要保留该功能,否则您将无法编辑以前的评论。所以这意味着你有一个特殊的更新案例。我会为 MyTable 的存储库添加一个方法来运行你想要的 sql:

public int PrependComment(int id, String comment)
{
String sql = "UPDATE MyTable SET Comments = {0} +
CHAR(13)+CHAR(10) + Comments WHERE ID = {1}";
return dbContext.Database.ExecuteSqlCommand(sql, comment, id);
}

关于c# - 如何使 EF 使用字符串连接构建更新 SQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32773936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com