gpt4 book ai didi

SubSonic 生成代码并始终过滤记录

转载 作者:行者123 更新时间:2023-12-04 06:54:21 27 4
gpt4 key购买 nike

我有一个名为“用户”的表,它有一个名为“已删除”的列,一个 bool 值表示用户已从系统中“删除”(当然,没有实际删除它)。

我也有很多表对 Users.user_id 列有 FK。 Subsonic 以类似的方式(非常好地)生成所有外键的代码:

    public IQueryable<person> user
{
get
{
var repo=user.GetRepo();
return from items in repo.GetAll()
where items.user_id == _user_id
select items;
}
}

虽然这很好,但有没有办法生成代码以始终过滤掉“已删除”用户?

在这里的办公室里,我们唯一能想到的建议就是使用部分类并对其进行扩展。当有很多类使用 User 表时,这显然很痛苦,更不用说很容易无意中使用错误的属性(在此示例中为 User 与 ActiveUser):
    public IQueryable<User> ActiveUser
{
get
{
var repo=User.GetRepo();
return from items in repo.GetAll()
where items.user_id == _user_id and items.deleted == 0
select items;
}
}

有任何想法吗?

最佳答案

您需要更改 ActiveRecord.tt 文件中的以下代码并重新生成代码:

以下代码位于:#region ' Foreign Keys '
更新:我已经为您的评论更新了代码,用于检查删除列是否可用,然后仅应用删除条件。
HasLogicalDelete() - 如果表具有“已删除”或“已删除”列,则此函数将返回 true,否则返回 false。

public IQueryable<<#=fk.OtherClass #>> <#=propName #>
{
get
{

var repo=<#=Namespace #>.<#=fk.OtherClass#>.GetRepo();

<#if(tbl.HasLogicalDelete()){#>

return from items in repo.GetAll()
where items.<#=CleanUp(fk.OtherColumn)#> == _<#=CleanUp(fk.ThisColumn)#> && items.deleted == 0
select items;

<#}else{#>

return from items in repo.GetAll()
where items.<#=CleanUp(fk.OtherColumn)#> == _<#=CleanUp(fk.ThisColumn)#>
select items;

<#}#>
}
}

关于SubSonic 生成代码并始终过滤记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2727266/

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