gpt4 book ai didi

c# - 将 Entity Framework 调用绑定(bind)到一个公共(public)参数,例如 UserId

转载 作者:行者123 更新时间:2023-11-30 18:24:00 25 4
gpt4 key购买 nike

我们正在使用 Entity Framework 创建一个应用程序来处理特定于单个用户的数据。数据库支持无限用户,因此我们确实需要按 UserId 进行过滤。 SQL Server 后端有一个用于所有表的公共(public)列 (INT UserId)。对于数据库的每个查询,我们都必须传递和评估 UserId 参数,例如在 LINQ 等中。是否有一种好方法可以删除此代码,以便所有查询自动传递更高级别的 UserId 集?例如,如果我想从数据库中获取 UserId 的 GetFoo(),我可以让应用程序调用 context.GetFoo() 而不必将 UserId 作为参数传递?例如,在创建上下文时,我们可以在该级别传递 UserId 吗?

最佳答案

您可以使用这个库:https://github.com/jcachat/EntityFramework.DynamicFilters

只需在您需要按用户 ID 过滤的所有实体上实现一个带有 userId 的接口(interface)。

public interface IUserEntity
{
int UserId {get; set;}
}

将 userId 传递给您的 DbContext,然后在 OnModelCreating 中:

modelBuilder.Filter("UserId", (IUserEntity u) => u.UserId, _userId);

关于c# - 将 Entity Framework 调用绑定(bind)到一个公共(public)参数,例如 UserId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31763130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com