请注意,有人问过类似的问题,我觉得它没有得到回答 - Entity Framework Code First, Navigation Property between different contexts/databases
我有一个AccountsDbContext和一个DataDbContext。对于DataDbContext,我创建了一个类:
public class Article
{
public int Id { get; set; }
public string Title { get; set; }
// Other data properties not shown for brevity.
public string UserId { get; set; } // who wrote/owns this article?
[ForeignKey("UserId")]
public virtual IdentityUser User;
/* I don't think I can do the above because IdentityUser is another context -
AccountsDbContext.
*/
}
我正在考虑删除外键属性(或者也可能是virtual
关键字)。每当访问Article
时,这可能会导致null属性,对吗?如果是这样,那么我将不得不执行另一个查询来获取用户。
如果用户需要通过作者角色(例如AccountsDbContext
的一部分)搜索文章(例如),这将是一个问题。我必须首先获取所有结果,查询每个结果的用户信息,然后过滤。这似乎相当缓慢,绝对会浪费计算机的分页。
有没有更好的方法来处理这种情况?同样,我们假设我们不能跨数据上下文进行外键修改。
答案 0 :(得分:1)
在涉及多种情境时,有几种理论。您看到的最大问题是您无法合并它们之间的数据。
我有一个问题是你需要有多个上下文吗?如果没有,我将使用单个上下文,然后问题将得到解决。否则,正如您所说,您必须获得用户列表,然后通过循环访问用户来过滤文章。随着时间的推移,这可能会非常缓慢。
您可能拥有的另一个选项是其中一个上下文中的仅查看模型,然后您可以调用适当的上下文来获取完整的详细信息。维护这可能有点麻烦。