在我的 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/