C# 删除用户后,如何将大量用户数据库记录移植到历史存储器中?

C# 删除用户后,如何将大量用户数据库记录移植到历史存储器中?,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我目前正在使用SQLServer和实体框架。我们有一个大型数据库,它由许多通过关系链接的附加表组成。至少有15个表与主表“用户”有关系 例如。 使用者 用户助理 用户配置文件 用户类型 产品 购买 。。。还有10个左右 现在,如果一个用户想要从系统中删除,由于税收原因和许多其他内部原因,我们仍然需要保留交易数据等。如果用户删除了他们的帐户,那么所有其他表数据都将级联并丢失。因此,我们需要删除用户信息,但将其存储在另一组表中 我们正在考虑创建起始表名为“Deleted”的重复表。例如Delet

我目前正在使用SQLServer和实体框架。我们有一个大型数据库,它由许多通过关系链接的附加表组成。至少有15个表与主表“用户”有关系

例如。 使用者

  • 用户助理
  • 用户配置文件
  • 用户类型
  • 产品
  • 购买
  • 。。。还有10个左右
现在,如果一个用户想要从系统中删除,由于税收原因和许多其他内部原因,我们仍然需要保留交易数据等。如果用户删除了他们的帐户,那么所有其他表数据都将级联并丢失。因此,我们需要删除用户信息,但将其存储在另一组表中

我们正在考虑创建起始表名为“Deleted”的重复表。例如DeletedUsers->DeletedUserAddress等

但是,按id提取记录、新建模型、将其发送到已删除的表、提取下一个表数据、新建模型、将其存储到已删除的表等等似乎有些奇怪。然后在最后删除主用户表记录,所有记录被级联并从数据库中删除

有谁能提出一种更有效的存储历史数据的方法吗

如果我努力的话,我可以看到

//GET THE USER
UsersTableModel user = await db.Users.SingleOrDefault(x => x.id == 1234);

//AIM TO STORE
db.DeletedUsers.Add(user);
如果不起作用,我需要全新的DeletedUsers模型并添加

有没有更简单的方法


谢谢

您可以使用软删除选项,在该选项中,您可以在表中添加一列作为“isDeleted”=“0”或“1”,并根据isDeleted选项对其进行筛选……这样您就可以保留记录

您可以使用软删除选项,在表中添加一列作为“isDeleted”=“0”或“1”,然后您可以可以根据isDeleted选项进行筛选…这样您就可以保存您的记录了

希望它能对您有所帮助

有15个表与用户表有关系。所以,如果从用户表中删除用户,那么15个表中的相关数据也将被删除(级联)。因此,很难/无逻辑地记录15个表的数据

解决方案:不从用户表中删除用户,只需在用户表中保留一列记录,如IsDeleted。向名为IsDeleted的用户表中添加一个新列,并使用0(活动)和1(已删除)对其进行更新

然后,在获取用户记录、事务详细信息时,应根据需要添加过滤器(where子句)。像下面这样,

db.Users.Where(x=>x.IsDeleted==0) // to fetch users and details except deleted users
db.Users.Where(x=>x.IsDeleted==1) // to fetch deleted users and details
希望它能帮助你

有15个表与用户表有关系。所以,如果从用户表中删除用户,那么15个表中的相关数据也将被删除(级联)。因此,很难/无逻辑地记录15个表的数据

解决方案:不从用户表中删除用户,只需在用户表中保留一列记录,如IsDeleted。向名为IsDeleted的用户表中添加一个新列,并使用0(活动)和1(已删除)对其进行更新

然后,在获取用户记录、事务详细信息时,应根据需要添加过滤器(where子句)。像下面这样,

db.Users.Where(x=>x.IsDeleted==0) // to fetch users and details except deleted users
db.Users.Where(x=>x.IsDeleted==1) // to fetch deleted users and details