gpt4 book ai didi

entity-framework - 在 Entity Framework 中,如何指定关联条件?

转载 作者:行者123 更新时间:2023-12-02 02:37:08 26 4
gpt4 key购买 nike

我有一个带有关联表的关系模型。但是除了相关的keys,这张表还有一个flag。我想定义两个关联:一个标志为真,另一个标志为假。 EF 设计者可以向实体添加条件,但不能向关联添加条件。

关联表如下所示:

UserPrivilege
-------------
UserId int (FK1)
PrivilegeId int (FK2)
IsGranted bit

我想在用户实体和特权实体之间创建两个关联:PrivilegesGranted 和 PrivilegesDenied。

最佳答案

您不能直接通过设计器执行此操作。

但这在使用 DefiningQuery 和 Create and Delete 存储过程的 XML 中是可能的。有关更多信息,请参阅我博客上的这篇旧帖子:Associations with Payloads .

唯一有点有趣的是我假设 PK 只是 UserId 和 PrivilegeId,这意味着不能同时授予和拒绝用户的特定权限。

所以如果你写这样的代码:

Privilege p = user.Granted.First();
user.Granted.Remove(p);
user.Denied.Add(p);
ctx.SaveChanges();

更新顺序很重要。因为您正在为这两个关联使用 DefiningQuery,所以 EF 不知道它们是相关的,并且它需要先删除才能执行更新。

所以你最终可能会违反 PK。

解决此问题的一种方法是在每个关联的插入和删除存储过程中,您基本上可以让它们更改用户和特权对的当前行,如果存在则使用正确的 IsGranted 值更新它,如果不创建它,即将它变成一个 upsert。

告诉我你是怎么走的

亚历克斯

关于entity-framework - 在 Entity Framework 中,如何指定关联条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1008646/

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