繁体   English   中英

向应用程序用户ASP.NET MVC添加其他属性

[英]Add additional property to application user ASP.NET MVC

我正在学习ASP.NET MVC 5和EF。 我希望每个注册用户都能够创建其所属项目的简单列表。

所以我在Model文件夹中有一个Item类:

class Item 
{
   public int Id {get; set;}
   public string Name {get; set;}
}

如何使用代码优先方法更新数据库,以便用户可以拥有Items表的外键,以便可以查询属于当前用户的所有项?

Select * 
From Items 
Where userID = currentUserID

您将需要将item作为单独的entity(Model)然后与user建立关系。 当您使用这种方法时,EF会创建各自的表及其关系(一对多,即一个用户可以有多个实体)。

这是其在代码中的实现方式。

物品类别

public class Item 
{
   public int Id {get; set;}
   public string Name {get; set;}

   //foreign key
   public int UserId {get; set;}

   //Navigation property 
   public virtual ApplicationUser User{get; set;}
}

应用程序用户类别

public class ApplicationUser : IdentityUser
{
    //Here you can add more properties if you wish to
    public string FirstName{ get; set; }
    public string LastName { get; set; }

    //User-Item relationship (user can have many Items)
    public virtual List<Item> Items { get; set; }
}

然后,您将必须转到ApplicationDbContext并添加Item DbSet ,如下所示

public class ApplicationDbContext : IdentityDbContext<SchedulerUser>
{
    public virtual DbSet<Item> Items { get; set; }

    //some code are excluded for clarity
}

要获取属于用户的所有项目的列表,可以使用linq进行查询,例如

var _db = new ApplicationDbContext();
var Items = _db.Users.Find(UserId).Items.ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM