我有一个相当奇怪的问题,此刻正在摸不着头脑。我正在将EF和MySQL一起用于项目,当我想更新数据库中的记录时,就像这样
using (var context = new MyDbContext())
{
var record = (from d in context.Dictionary where d.CompanyName == companyName && d.Name == "Logo" select d).FirstOrDefault();
record.Value = _path;
context.SaveChanges();
}
然后每个记录 d.Name ==&#34; Logo&#34; 的记录都会因某种原因而更新,这意味着它会忽略 d.CompanyName == companyName < / em>部分。任何经历过相同问题或知道如何解决问题的人?
提前致谢。
答案 0 :(得分:0)
实际上我并不经常使用EF Provider for MySQL,但我认为它有效。
问题可分为两部分,即选择和更新。选择很好,如果你需要查看什么是查询,你可以像这样分割选择语句
var query = (from d in context.Dictionary where d.CompanyName == companyName && d.Name == "Logo" select d);
var record = query.FirstOrDefault();
并查看查询变量(只需将其指向调试模式)。
关于你的问题,我可以想象的唯一原因是你没有以正确的方式配置Dictionary类。
我的意思是,当你运行context.SaveChanges时,使用Dictionary的Key定义(查询的Where部分)生成Update查询。如果键定义错误,则where子句将是错误的。
答案 1 :(得分:0)
使用这个我希望这会对你有帮助。
using (var context = new MyDbContext())
{
var record = context.Dictionary.Where(x=> x.CompanyName == companyName && x.Name == "Logo").FirstOrDefault();
record.Value = _path;
context.SaveChanges();
}