Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架中的asp.net标识类_C#_Asp.net_Entity Framework_Asp.net Identity_Asp.net Identity 2 - Fatal编程技术网

C# 实体框架中的asp.net标识类

C# 实体框架中的asp.net标识类,c#,asp.net,entity-framework,asp.net-identity,asp.net-identity-2,C#,Asp.net,Entity Framework,Asp.net Identity,Asp.net Identity 2,我是否能够使用实体框架模型(类)作为asp.net标识的类 因此,当我检索用户时,数据库中的关系将被加载,如果我更新任何列或添加表,我只需要处理实体框架模型 我确实为用户自定义了类 public class MyUser : IdentityUser<long, MyLogin, MyUserRole, MyClaim>{ ... } 公共类MyUser:IdentityUser{…} 把它和桌子连接起来 protected override void OnModelCreat

我是否能够使用实体框架模型(类)作为asp.net标识的类

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

我确实为用户自定义了类

public class MyUser : IdentityUser<long, MyLogin, MyUserRole, MyClaim>{ ... }
公共类MyUser:IdentityUser{…}
把它和桌子连接起来

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity<MyUser>().ToTable("Users");
            .....
        }
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
基于模型创建(modelBuilder);
modelBuilder.Entity().ToTable(“用户”);
.....
}
但我有更多的表与“Users”表相连接,而不是与Identity模型相连接 例如:

我有一张名为Person的表(不仅仅是一个示例)

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

所以我们有另一个表叫做“PersonsUsers”

所以用户有一个列表

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

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


您还有其他解决方案吗?

是的,这是可能的。MyUser类可以有一个包含人员列表的属性。然后在modelBuilder中设置映射。大概是这样的:

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

我相信这将完成您想要的功能。

谢谢matty的回答,但这将使我的代码保持静态,我必须在添加或修改关系时进行更新,是否有任何方法可以使用EF类?另外,我在用户中添加了一些字段,并希望包括如何做到这一点?我不确定我是否完全理解你正在寻找答案。也许你可以在你的帖子中给出一个更详细的例子?