要定义例如艺术家和相册之间的一对多关系,我会从以下两个模型/类中创建两个脚手架项目:
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
模型中所做的那样。用户应该能够上传图像而无需从用户下拉列表中选择他或她的名字。也就是说,用户上传的每个图片只能属于当前身份用户。
ApplicationUser
之间关系的最佳方式是什么?
和Image
用户上传的每张图片只能属于
那个用户(因此没有下拉列表)?ApplicationsUser
的索引视图中返回UserFirstName
的{{1}}和UserSurname
(显示姓名和姓氏,而不是显示每个图像的用户名)?