1

У меня есть проект ASP.NET MVC 4 WEBAPI с Entity Framework 4.3 У этого есть 3 таблицы в моей MS SQL DB:ASP.NET MVC 4 WEBAPI Entity Framework 4.3: Каков наилучший способ сэкономить «многие на многие» из коллекции

Питания MealCategory Категория

Вторая таблица является соединение 1 и 3 (многие ко многим связи). Вот моя еда модель:

[Table("Meal")] 
public class Meal 
{ 
[Key] 
public long MealID { get; set; } 
public string MealName { get; set; } 
... 
public virtual ICollection<Category> Categories { get; set; } 
} 

И вот моя Категория модель:

[Table("Category")] 
public class Category 
{ 
[Key] 
public long CategoryID { get; set; } 
... 
public virtual ICollection<Meal> Meals { get; set; } 
} 

Я использую код первого. И есть DbContext:

public class DgDbContext : DbContext 

{ 
    public DbSet<Category> Category { get; set; } 
    public DbSet<Meal> Meal { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Meal>(). 
     HasMany(c => c.Categories). 
     WithMany(p => p.Meals). 
     Map(
     m => 
     { 
      m.MapLeftKey("MealID"); 
      m.MapRightKey("CategoryID"); 
      m.ToTable("MealCategory"); 
     }); 
    } 
} 

Также у меня есть действие:

// POST /api/<controller>/<action> 
public HttpResponseMessage PostMeals(IEnumerable<Meal> meals) 
{ 
    ... 
} 

Итак, вопрос: что это лучший способ, чтобы сохранить все мое питание к БД со всеми подключениями к категории и MealCategory?

ответ

0

Вы пробовали что-то вроде этого:

using(var ctx = new DgDbContext()) 
{ 
    foreach(var meal in meals) 
    { 
     ctx.Meal.Add(meal); 
    } 
    ctx.SaveChanges(); 
} 

?