我在C#中使用EF 6.0和ASP.NET MVC,我有两个类 - project
和feature
:
public class project
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid id { get; set; }
[Required]
public string aliasName { get; set; }
public virtual List<feature> features { get; set; }
}
和
public class feature
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int id { get; set; }
[Required]
public string name { get; set; }
[DataType(DataType.MultilineText)]
public string description { get; set; }
}
最终用户将为每个项目选择多个功能,每个项目可以包含不同的功能。
如何在EF中设置此选项并将此选择存储在db中?
在dbContext
,我现在有:
public DbSet<project> Projects { get; set; }
public DbSet<feature> Features { get; set; }
现在,当您需要存储的所有内容都是Feature.id属性的每个“功能”的唯一标识符时,您试图将整个“功能”列表存储到“项目”数据库中。所以“项目”可能是:
public class project
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid id { get; set; }
[Required]
public string aliasName { get; set; }
[ForeignKey("Features")]
public virtual List<int> featureIds { get; set; }
}
当您需要特定的功能数据时,只需在Feature数据库中查询特定的功能ID即可。 Here is有关在Entity中使用外键的更多信息。
在Project类中:
public virtual ICollection<feature> feature { get; set; }
在dbContext中:
modelBuilder.Entity<project>().HasMany(i => i.feature).WithMany();