1

我有一个带有 Entity Framework 4.3 的 ASP.NET MVC 4 WEBAPI 项目它在我的 MS SQL DB 中有 3 个表:

Meal 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)
{
  ...
}

所以问题是:将我所有的饭菜保存到 DB 并与 Category 和 MealCategory 的所有连接的最佳方法是什么?

4

1 回答 1

0

你有没有尝试过这样的事情:

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

?

于 2012-04-17T23:11:48.297 回答