我应该使用EF在C#代码中重写SQL代码:
UPDATE Submissions SET Other_Platform = (SELECT top 1 Other_Platform FROM Submission_Platform_Other_DistributionMethods WHERE Submission_ID = @SubmissionId )
因为表Submissions
中有许多记录我不想将此集合转换为List
以更新循环字段。
有人有什么想法吗?感谢。
var otherPlatform = db.Submission_Platform_Other_DistributionMethods.FirstOrDefault(d => d.Submission_ID == subId);
var toUpdate = db.Submissions.Select(s=> UpdateSubmission(otherPlatform));
db.Submissions.AddRange(toUpdate);
db.SaveChanges();
这是我想到的一种可能的解决方案 - 创建一些方法(如mapper),将参数设置为Other_Platform
答案 0 :(得分:1)
如果您希望保持已完成更新的上下文警报。然后我认为除了循环收集并更新平台然后保存更改之外,还有其他方法。
您可以采取其他两种方式,但这些方法意味着更改将超出您在上下文中加载的实体,并且您必须重新创建上下文。
1)创建一个存储过程并使用您提供的参数执行该过程
2)执行sqlcommand到上下文
using (var context = new MyContext())
{
context.Database.SqlCommand("<update query here>");
}