映射`ApplicationUser`与ASP.NET中的数据之间的一对多关系的最佳方法是什么?

时间:2015-09-23 13:30:23

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

要定义例如艺术家相册之间的一对多关系,我会从以下两个模型/类中创建两个脚手架项目:

public class Album
{
     public int AlbumID { get; set; }
     [Display(Name="Album Title")]
     public string AlbumTitle { get; set; }
     [Display(Name = "Artist")]
     public int ArtistID { get; set; }
     public virtual Artist Artist { get; set; }
}

public class Artist
{
    public int ArtistID { get; set; }
    [Display(Name="Artist")]
    public string ArtistName { get; set; }
    public virtual ICollection<Album>  Album { get; set; }
}

这将为Create.cshtml生成Album视图(以及其他视图),其中包含艺术家的下拉列表。


现在我有一个应用程序,其中Image模型和ApplicationUser模型定义了一个关系,每个应用程序用户可以上传多个图像

public class ApplicationUser : IdentityUser
    {
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            // Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            // Add custom user claims here
            return userIdentity;
        }
        public string UserFirstName { get; set; }
        public string UserSurname { get; set; }
        public virtual ICollection<Image>  Image { get; set; }
    }

public class Image
{
     public int ImageID { get; set; }
     [Display(Name="Caption")]
     public string ImageCaption { get; set; }
     public int NumOfLikes { get; set; }
     [Display(Name = "Image")]
     public byte ImageFile { get; set; }
     // WHERE THE ApplicationUser FOREIGN KEY SHOULD BE
     public virtual ApplicationUser ApplicationUser { get; set; }
 }

<小时/> 现在我的问题是,我不知道如何将ApplicationUser的密钥用作Image模型中的外键,就像我在Album Artist模型中所做的那样。用户应该能够上传图像而无需从用户下拉列表中选择他或她的名字。也就是说,用户上传的每个图片只能属于当前身份用户

问题

  1. 映射ApplicationUser之间关系的最佳方式是什么? 和Image用户上传的每张图片只能属于 那个用户(因此没有下拉列表)?
  2. 如何在ApplicationsUser索引视图中返回UserFirstName的{​​{1}}和UserSurname(显示姓名和姓氏,而不是显示每个图像的用户名)?

0 个答案:

没有答案