【问题标题】:asp.net Identity classes from Entity Framework来自实体框架的 asp.net 身份类
【发布时间】:2014-12-23 11:53:00
【问题描述】:

我可以使用实体框架模型(类)作为 asp.net 身份的类

所以当我检索用户时,我在数据库中的关系将被加载,如果我更新任何列或添加表,我只需要处理实体框架模型。

我确实为用户做了自定义类

public class MyUser : IdentityUser<long, MyLogin, MyUserRole, MyClaim>{ ... }

把它和桌子连接起来

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<MyUser>().ToTable("Users");
            .....
        }

但我有更多表与未使用身份模型的“用户”表相关联 例如:

我有一个名为 Person 的表(不只是一个例子)

每个人可能有很多用户,每个用户可能有很多 人

所以我们有另一个名为“PersonsUsers”的表

所以用户有一个列表

我不想调用数据库两次来检索单个用户数据,从代码映射表将使我的代码静态并取决于我更新源代码。

那么是否可以使用 EF 为表生成的类?

您还有其他解决方案吗?

【问题讨论】:

    标签: c# asp.net entity-framework asp.net-identity asp.net-identity-2


    【解决方案1】:

    是的,这是可能的。您的 MyUser 类可能具有包含 Person 列表的属性。然后在您的模型构建器中设置映射。像这样的:

     modelBuilder.Entity<MyUser>().HasMany(m => m.Person)
                                  .WithMany(p => p.MyUser)
                                  .Map(m => {
                                       m.ToTable("PersonUsers");
                                       m.MapLeftKey("MyUserID");
                                       m.MapRightKey("PersonID");
    

    我相信这将实现您的目标。

    【讨论】:

    • 感谢 matty 的回答,但这会使我的代码静态化,我必须在添加或修改关系时更新它,有没有办法使用 EF 类?我还添加了一些用户字段,并希望包括我该怎么做?
    • 我不确定我是否完全理解您想要做什么。也许您可以在帖子中提供更详细的示例?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多