NHibernate主从表的新增和编辑问题

项目场景:做一个主从表新增编辑的业务。从表的数据我是直接通过前台的js获取新增和编辑的数据放到隐藏于,在点击保存按钮的时候,把前台隐藏域中的所有新增的从表数据和编辑的从表数据通过json反射层对应的从表list。保存代码如下:

#region 从表数据
List listAS_ReqOrder_Dtl = JsonHelp.JsonToClass>("[" + hidReqOrderInfoJson.Value + "]");
if (listAS_ReqOrder_Dtl != null && listAS_ReqOrder_Dtl.Count > 0)
{
model.List_AS_ReqOrder_Dtl = new HashedSet();//清空
for (int i = 0; i < listAS_ReqOrder_Dtl.Count; i++)
{
AS_ReqOrder_Dtl modelDtl = listAS_ReqOrder_Dtl[i];
modelDtl.AS_ReqOrder = model;
modelDtl.IsDel = false;
if (modelDtl.Version==0)
{
modelDtl.CreateBy = WebLoginUserInfo.ID.ToStr();
modelDtl.CreateDate = DateTime.Now;
modelDtl.Sort = 0;
}
else
{
modelDtl.ModifyBy = WebLoginUserInfo.RealName;
modelDtl.ModifyDate = DateTime.Now;
}
model.AddAS_ReqOrder_Dtl(modelDtl);
}
}
#endregion

    if (reqID.IsNullOrEmpty())
    {
        try
        {
            model.Status = iState;
            model.OrgID = OrgID.Value.ToInt32();
            var result = ServerFactory.AS_ReqOrderServer.SaveModel(model).ToInt32();
            if (result > 0)
            {
                AlertJsMsg("添加成功", "ReqOrdeList.aspx");
            }
            else
            {
                AlertJsMsg("添加失败", "");
            }
        }
        catch (Exception ex)
        {
            AlertJsMsg("添加失败:" + ex.Message, "");
        }
    }
    else
    {
        try
        {
            var result = ServerFactory.AS_ReqOrderServer.UpdateModel(model);

            if (result)
            {
                AlertJsMsg("修改成功", "ReqOrdeList.aspx");
            }
            else
            {
                AlertJsMsg("修改失败", "");
            }
        }
        catch (Exception ex)
        {
            AlertJsMsg("修改失败:" + ex.Message, "");
        }
    }

其中model是主表的实体,AS_ReqOrder_Dtl是从表的实体

现在新增没问题,编辑就是死活编辑不了。

gion 从表数据
List listAS_ReqOrder_Dtl = JsonHelp.JsonToClass>("[" + hidReqOrderInfoJson.Value + "]");
if (listAS_ReqOrder_Dtl != null && listAS_ReqOrder_Dtl.Count > 0)
{
model.List_AS_ReqOrder_Dtl = new HashedSet();//清空
for (int i = 0; i < listAS_ReqOrder_Dtl.Count; i++)
{
AS_ReqOrder_Dtl modelDtl = listAS_ReqOrder_Dtl[i];
modelDtl.AS_ReqOrder = model;
modelDtl.IsDel = false;
if (modelDtl.Version==0)
{
modelDtl.CreateBy = WebLoginUserInfo.ID.ToStr();
modelDtl.CreateDate = DateTime.Now;
modelDtl.Sort = 0;
}
else
{
modelDtl.ModifyBy = WebLoginUserInfo.RealName;
modelDtl.ModifyDate = DateTime.Now;
}
model.AddAS_ReqOrder_Dtl(modelDtl);
}
}
#endregion
if (reqID.IsNullOrEmpty())