1

Entity Framework 4.3 を使用した ASP.NET MVC 4 WEBAPI プロジェクトがあります。MS SQL DB に 3 つのテーブルがあります。

食事 食事カテゴリー カテゴリー

2 番目の表は、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 に答える