根据主键修改数据无效
zhouxin93 opened this issue · 16 comments
当不写where条件。直接update应该是根据主键来修改数据库。但是这种情况下数据库的所有数据都被修改了。
主键加了Key的特性标签没?
增加了
好,我检查下看看,修复了告诉你
Thank you
目前因为根据主键修改数据不行。我使用 Where(a.id=>a.id==model.id) 。这样也会有一个问题。第一次是OK的。第二次再次调用这一句修改的还是上一个id的。这是哪里做了缓存没有清理掉么。
刚刚第一个问题我修复,已提交了,这个问题我现在看看
OK。辛苦了
我这里测试了没问题,不知道是不是你的model.id没有修改到?才会导致修改了同一条数据
之前刚那个Update的问题的确是我没测试到的场景,我的疏忽,非常抱歉。也非常感谢你的积极反馈,很有价值
修改到了。每次都会拿到新的id。你使用不同的条件查询出来不同的记录。然后再去修改它看看
方便发你那段代码看看不,我现在需求评审,不方便调试
var item = await shareLogRepository.GetItem(userid, model.postsid);
`var list = item.ShareTo.SplitToList(',');
if (model.shareto.Length > 0 && !list.Contains(model.shareto))
{
list.Add(model.shareto);
item.ShareTo = string.Join(",", list);
isFlag = await shareLogRepository.UpDateAsync(item);
}`
public async Task<bool> UpDateAsync(ShareLog model) { using (var conn = db.GetDbConn(dbKey.BBS)) { var res = (await conn.CommandSet<ShareLog>().Where(a => a.Id == model.Id).UpdateAsync(model)) > 0; return res; } }
这传上来格式有点乱。就是正常的根据条件查询一条数据。修改数据然后更新到数据库
另外建议数据库操作增加异步的封装。NetCore 在Linux 异步性能更高点。
找到你刚刚说的缓存问题了,的确在TrimExpression里调用的时候MemberToValue,想把委托存到内存提高效率,但是却引起了解析出的value一致的问题。我暂时把缓存屏蔽了修复一下,迟点再优化这块。谢谢反馈
好的。