Telerikのグリッドは同じレコードを複数挿入します

私は今日本当に奇妙な状況に直面した。

ビューエンジンとしてRazorを使用して、ASP.NET MVC3にTelerik
2011.2.712を使用しています。私はまた、データレイヤーのためのNHibernateを持っています。

私は、単純なエンティティを追加、更新、削除、表示するための単純なグリッドを持っています。

@(Html.Telerik().Grid()
    .Name("SectorList")
    .DataBinding(dataBinding => dataBinding
                .Ajax()
                .Select("Select", "Sector")
                .Insert("Insert", "Sector")
                .Update("Update", "Sector")
                .Delete("Delete", "Sector")
            )
            .ToolBar(commands => commands.Insert())
    .DataKeys(keys => keys.Add(c => c.Id))
    .Columns(columns =>
                 {
                     columns.Bound(o => o.Id).Hidden();
                     columns.Bound(o => o.Name);
                     columns.Command(commands =>
                     {
                         commands.Edit();
                         commands.Delete();
                    }).Width(200).Title("Command?");
                 })
    .Sortable()
    .Pageable(p => p.PageSize(20))
    )

コントローラとアクションは非常にシンプルです。

    [GridAction]
    public ActionResult Select()
    {
        return View(new GridModel(GridHelper.GetList()));
    }

    [HttpPost]
    [GridAction]
    public ActionResult Insert()
    {
        ISession session = DB.CurrentSession;
        using (ITransaction tx = session.BeginTransaction())
        {
            Sector item = new Sector();

            if (TryUpdateModel(item))
            {
                session.Save(item);
                tx.Commit();
            }
            else
                tx.Rollback();
        }
        return View(new GridModel(GridHelper.GetList()));
    }

    [HttpPost]
    [GridAction]
    public ActionResult Update(int id)
    {
        ISession session = DB.CurrentSession;
        using (ITransaction tx = session.BeginTransaction())
        {
            Sector item = new Sector();

            if (TryUpdateModel(item))
            {
                session.Update(item);
                tx.Commit();
            }
            else
                tx.Rollback();
        }
        return View(new GridModel(GridHelper.GetList()));
    }

    [HttpPost]
    [GridAction]
    public ActionResult Delete(int id)
    {
        ISession session = DB.CurrentSession;
        using (ITransaction tx = session.BeginTransaction())
        {
            session.Delete(session.Get(id));
            tx.Commit();
        }
        return View(new GridModel(GridHelper.GetList()));
    }

GridHelperは、DB内のすべてのセクタを返します。 私はレコードの “選択”と “削除”には問題ありません。

レコードを挿入すると、レコードが正常に挿入されます。
2番目のレコードを挿入すると、最初のレコードと2番目のレコードが追加されます。

例: “First”、 “Second”、 “Third”を順番に追加すると、結果は次のようになります。

  • 最初に
  • 最初に
  • 2番目の
  • 最初に
  • 2番目の
  • 3番目

私はこの振る舞いの理由や解決策を見つけることができません。

ベストアンサー
申し訳ありませんが、適切な答えはありません

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です