【问题标题】:IdentityDbContext, DbContext and Relationships‏IdentityDbContext、DbContext 和关系
【发布时间】:2015-01-08 11:34:11
【问题描述】:

我需要一些帮助才能使用我自己的 DbContext 创建应用程序用户和我的业务实体之间的关系。我有两个 DbContext,一个用于身份,另一个用于我的业务实体。

public class IdentityDbContext : IdentityDbContext<ApplicationUser>
 {
        public DbSet<Singles> Single { get; set; }
        public DbSet<Country> Country { get; set; }
        public DbSet<Ethnicity> Ethnicity { get; set; }
 }

以上对我有用。如果我将上述 DbSet 属性移动到我自己的 DbContext 中,它会开始引发一些与 IdentityUserLogin 表等相关的外键错误。这是因为我试图在我的应用程序用户与 Single 和 Single 之间创建关系,也与 Country 有关系和种族。是否可以将上述 DbSet 属性移动到我的 DbContext 中并像现在使用 IdentityDbContext 一样在它们之间创建关系?

【问题讨论】:

    标签: entity-framework asp.net-identity


    【解决方案1】:

    一个更好的主意是只使用 IdentityDbContext,而不是使用您的其他上下文。也就是说,尝试将所有内容都移到身份上下文中。这会起作用,因为身份上下文继承了正常的上下文。

    【讨论】:

    • 好的。您能否让我知道如何在 IdentityDbContext 中禁用延迟加载。我发现即使我将配置禁用 Proxycreation 和 Lazyloading 设置为 false,它仍然会加载导航属性,因为它只在我的查询中使用“包含”时才期望加载。
    • 你有一些代码示例吗?我觉得奇怪的是,将延迟加载设置为 false 仍然会加载您的相关实体。顺便说一句:从导航属性定义中删除 virtual 将消除延迟加载该关系的可能性(即使启用了延迟加载)。还要检查 ef 的 Local (in memory) 数据是否与你的非延迟加载效果有关 (msdn.microsoft.com/en-us/data/jj592872.aspx)
    • @Horizo​​n_Net - 出于好奇,这是严格必需的吗?或者有没有办法让DbContext 实现使用IdentityDbContext 引用实体?我有点不愿意将我的所有实体都移到一个新的基类中,以便其中一些可以引用ApplicationUser 类。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 2013-12-15
    相关资源
    最近更新 更多