当我没有键值时更新 Table

Update of Table when I don't have the key value

我正在使用 entity framework 开发 .net 核心 api。我已经进行了一段时间的开发,但对 entity framework 还是个新手。此外,我正在尝试使用 DTO 对象来限制和减少可用信息量。我的问题是这样的。如果我不将我的唯一 ID 从数据库传回给最终用户,我该如何对该对象执行更新?

例如我有一个class有

身份证、名字、姓氏、年龄

我返回给最终用户的 DTO 是:

名字、姓氏、年龄

没有ID如何实现更新和删除?

我知道这可能是个愚蠢的问题,我遗漏了显而易见的问题,所以请多多包涵。我一直在寻找答案,但每次搜索时,我总是发现有关没有主键的表的问题。

如果不使用 Id 或其他主键,则无法更新记录。例如,要更新用户,您需要查找现有用户记录、更新部分或全部属性并保存。不使用 Id 查找用户的唯一方法是

var existedUser = Context.Set<User>().Where(u=> u.FirstName==dto.FirstName 
&& u.LastName==dto.LastName  
&& u.Age==dto.Age).FirstOrDefault();

但是由于您必须更新用户属性,这意味着 FirstName 或 LastName 或 Age 或所有这些都已在您的 Dto 中更改,因此您不能使用它们来查找要更新的用户记录。

您可以使用此代码找到要删除的用户,但这也不是最好的主意,因为可以是具有相同姓名和年龄的不同用户。