具有对象列表的Entity Framework类

问题描述 投票:1回答:2

我在C#中使用EF 6.0和ASP.NET MVC,我有两个类 - projectfeature

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; }
c# asp.net-mvc entity-framework-6
2个回答
2
投票

现在,当您需要存储的所有内容都是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中使用外键的更多信息。


1
投票

在Project类中:

public virtual ICollection<feature> feature { get; set; }

在dbContext中:

modelBuilder.Entity<project>().HasMany(i => i.feature).WithMany();
© www.soinside.com 2019 - 2024. All rights reserved.