【问题标题】:C# .NET Core: Automatically save UserId in SQL ServerC# .NET Core:在 SQL Server 中自动保存 UserId
【发布时间】:2020-04-22 19:41:34
【问题描述】:

我们有一列 UserId 存储上次修改表的人。

有时,人们通过 C# .NET Core 应用程序修改客户、地址表。

web应用中有UserIds,显然没有存储为SQL Server登录。

例如:JoeSmith (UserId = 8) 是 C# 应用程序中的登录名,而不是 SQL Server 中的登录名。

如果一个人运行一个同时修改 5 个表的事务,是否有一种简单的方法可以自动更改所有 5 个表中的所有 UserIds?无需在所有 Linq-EF 查询中费力地添加 UserId 并修改所有自动映射器?

寻找一种简单的方法来执行此操作,

是否可以通过实体框架设置一个假的UserId,并将userId 的值默认给运行应用程序的人?

尝试研究: https://docs.microsoft.com/en-us/sql/t-sql/functions/system-user-transact-sql?view=sql-server-ver15

【问题讨论】:

  • 这听起来像XY problem。你的最终目标是什么?你为什么要这样做?
  • hi @Igor 的主要目标是以非常有效、快速的方式在表中为所有和未来的查询添加 UserId,而无需在所有 Linq 查询中手动添加 UserId,也无需更改映射器等跨度>

标签: c# sql-server entity-framework linq .net-core


【解决方案1】:

在 EF Core Shadow Properties 中提供了一个简单的解决方案来解决这个问题。影子属性作为数据库中的列存在,但不是 .NET 实体类型上的类属性或字段。

【讨论】:

  • 所以对于每个具有不同用户的 Api 请求,我可以将 userId 存储在一个变量中,然后使用影子属性对 SQL 表进行 parlay?上面略微编辑的问题
  • 是的。您只需在 DbContext.SaveChanges() 的覆盖中更新阴影属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-09
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多