2016-12-08 6 views
1

Я использую EF 6.0 и ASP.NET MVC с C# и у меня есть два класса - project и feature:Entity Framework класс со списком объекта

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; } 
} 

Конец -user будет выбирать более одного объекта для каждого проекта, и каждый проект может содержать различные функции.

Как настроить это в EF и сохранить этот выбор в db?

В dbContext у меня есть на данный момент:

public DbSet<project> Projects { get; set; } 
public DbSet<feature> Features { get; set; } 

ответ

2

Прямо сейчас, вы пытаетесь сохранить весь список «Features» в базе данных «Project», когда все, что вам нужно сохранить это уникальный идентификатор для каждой «функции», которая является свойством 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; } 
} 

Если вам нужны конкретные данные о функции, просто запросите базу данных функций для конкретного идентификатора функции. Here is Дополнительная информация об использовании внешних ключей в Entity.

+0

И как я могу сохранить этот список отношений в БД? Должен ли я добавить что-то в свой dbcontext? – user2633804

+0

Создаете ли вы новый db для хранения или пытаетесь обновить старый. Если вы еще не создали базу данных, вам не нужно ничего добавлять. В противном случае вам может понадобиться [выполнить миграцию базы данных] (https://msdn.microsoft.com/en-us/library/jj591621 (v = vs.113) .aspx # Включение% 20Migrations). – Kazenzakis

+0

ДБ - новый. Когда я создаю, нет таблицы, которая связывает featuresIds с projectId, только с таблицами проектов и функций. – user2633804

0

В классе проекта:

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

И в DbContext:

modelBuilder.Entity<project>().HasMany(i => i.model).WithMany(); 
Смежные вопросы