请注意,有人问了类似的问题,但我觉得没有得到回答 -Entity Framework Code First,不同上下文/数据库之间的导航属性 https://stackoverflow.com/questions/14340830/entity-framework-code-first-navigation-property-between-different-contexts-data
我有一个 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
也是关键字)。这可能会导致 null 属性Article
已访问,对吗?如果是这样,那么我将不得不执行另一个查询来获取用户。
如果用户需要按作者的角色(例如,作者的角色)搜索文章,这将是一个问题AccountsDbContext
。我必须首先获取所有结果,查询每个结果的用户信息,然后进行过滤。这看起来相当慢,而且肯定会浪费分页计算。
有没有更好的方法来处理这种情况?同样,我们假设我们不能跨数据上下文使用外键。
当涉及到多个上下文时,有几种理论。您看到的最大问题是您无法合并它们之间的数据。
我的一个问题是你需要有多个上下文吗?如果没有,我会使用单一上下文,然后问题就会得到解决。否则,正如您所说,您将必须获取用户列表,然后通过循环用户来过滤文章。随着时间的推移,这可能会变得非常慢。
您可能拥有的另一个选择是在其中一个上下文中使用仅查看模型,然后您可以调用适当的上下文以获取完整的详细信息。这维护起来可能有点麻烦。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)