Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 实体在模拟AJAX帖子上失败_Asp.net Mvc 3_Entity Framework_Asp.net Mvc 4_Linq To Entities_Entity Framework 5 - Fatal编程技术网

Asp.net mvc 3 实体在模拟AJAX帖子上失败

Asp.net mvc 3 实体在模拟AJAX帖子上失败,asp.net-mvc-3,entity-framework,asp.net-mvc-4,linq-to-entities,entity-framework-5,Asp.net Mvc 3,Entity Framework,Asp.net Mvc 4,Linq To Entities,Entity Framework 5,我有一个基于Jquery可拖放/可排序的更新数据库的操作。第一篇AJAX文章很好,但第二篇文章给了我一个错误: New transaction is not allowed because there are other threads running in the session. 它被发布到同一控制器上的两个单独的操作,在控制器中使用相同的UnitOfWork。我不知道该怎么做才能解决这个问题 编辑:这是正在调用的两种服务方法: public void NavItemSor

我有一个基于Jquery可拖放/可排序的更新数据库的操作。第一篇AJAX文章很好,但第二篇文章给了我一个错误:

     New transaction is not allowed because there are other 
threads running in the session.
它被发布到同一控制器上的两个单独的操作,在控制器中使用相同的UnitOfWork。我不知道该怎么做才能解决这个问题

编辑:这是正在调用的两种服务方法:

public void   NavItemSort(List<string> orderArray, string navID, string subNavID)
{

    var newOrderArray = orderArray.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();

    var orderArrayIDs = newOrderArray.Select(x => x.Replace("ContentItem", "")).ToList();

    var itemToBeSorted = Convert.ToInt32(orderArrayIDs.FirstOrDefault());

    var itemContext = cmsUnitOfWork.NavigationItems.Find().Where(x => x.ID == itemToBeSorted).ToList().FirstOrDefault();



    var currentSortOrder = cmsUnitOfWork.NavigationItems.Find()
                                                        .Where(x => x.NavID == itemContext.NavID && 
                                                        (itemContext.ParentID == null) ? x.ParentID == null :  
                                                        x.ParentID == itemContext.ParentID).ToList();

    var existingItems = currentSortOrder.Select(x => x.ID).ToList();

    List<string> existingItemsString = existingItems.ConvertAll<string>(x => x.ToString()).ToList();

    var newNavItemID = existingItemsString.Except(orderArray).FirstOrDefault();

    var currentSortOrderExcept = currentSortOrder.Where(x => x.ID != Convert.ToInt32(newNavItemID));


    foreach (var x in currentSortOrderExcept)
        {
            int sortOrderInt = orderArrayIDs.IndexOf(orderArrayIDs.Where(z => int.Parse(z) == x.ID).ToList().FirstOrDefault()) + 1; 


            NavigationItem navigationItem = new NavigationItem()
            {
                HasChild = x.HasChild,
                Level = x.Level,
                NavID = x.NavID,
                ID = x.ID,
                ParentID = x.ParentID,
                PageID = x.PageID,
                URL = x.URL,
                Title = x.Title,
                SortOrder = sortOrderInt,

            };

            if (navigationItem.SortOrder != null && navigationItem.SortOrder != 0)
            {
                cmsUnitOfWork.NavigationItems.Update(x, navigationItem);

            }

        }
        cmsUnitOfWork.Commit();
}
public void NavItemAdd(List<string> orderArray, string NavID, string subNavID){

    var newOrderArray = orderArray.Where(s => !string.IsNullOrWhiteSpace(s)).ToList();
    var orderArrayIDs = newOrderArray.Select(x => x.Replace("ContentItem", "")).ToList();

    NavID = NavID.Replace("nav", "");

    int NavIDInt = int.Parse(NavID);
    int subNavIDInt = int.Parse(subNavID);

    var existingNavItems = cmsUnitOfWork.NavigationItems.Find().Where(x => x.NavID == NavIDInt && x.ParentID == subNavIDInt).ToList();

    int currentSortOrder = 0;

    if (existingNavItems.Count() != 0)
    {
        currentSortOrder = existingNavItems.Max(x => x.SortOrder);
    }


    var existingItems = existingNavItems.Select(x => x.ID).ToList();

    List<string> existingItemsString = existingItems.ConvertAll<string>(x => x.ToString()).ToList();

    var newNavItemID = orderArray.Except(existingItemsString).FirstOrDefault();
    int newNavIDInt = int.Parse(newNavItemID);

    var newNavItemList = cmsUnitOfWork.NavigationItems.Find().Where(x => x.ID == newNavIDInt).ToList();

    var newNavItem = newNavItemList.FirstOrDefault();

    var parentNav = cmsUnitOfWork.NavigationItems.Find().Where(x => x.ID == subNavIDInt).ToList().FirstOrDefault();

    NavigationItem navigationItemUpdated = new NavigationItem()
    {
        ID = newNavItem.ID,
        Level = 2,
        NavID = NavIDInt,
        PageID = newNavItem.PageID,
        Title = newNavItem.Title,
        URL = newNavItem.URL,
        ParentID = subNavIDInt,
        SortOrder = currentSortOrder + 1
    };

    cmsUnitOfWork.NavigationItems.Update(newNavItem, navigationItemUpdated);
    cmsUnitOfWork.Commit();


}
public void NavItemSort(List orderArray、string navID、string subNavID)
{
var newOrderArray=orderArray.Where(s=>!string.IsNullOrWhiteSpace(s)).ToList();
var orderArrayIDs=newOrderArray.Select(x=>x.Replace(“ContentItem”,下称“)).ToList();
var itemtobestored=Convert.ToInt32(orderarayids.FirstOrDefault());
var itemContext=cmsUnitOfWork.NavigationItems.Find().Where(x=>x.ID==itemtobestored.ToList().FirstOrDefault();
var currentSortOrder=cmsUnitOfWork.NavigationItems.Find()
.Where(x=>x.NavID==itemContext.NavID&&
(itemContext.ParentID==null)?x.ParentID==null:
x、 ParentID==itemContext.ParentID).ToList();
var existingItems=currentSortOrder.Select(x=>x.ID).ToList();
列出existingItemsString=existingItems.ConvertAll(x=>x.ToString()).ToList();
var newNavItemID=existingItemsString.Except(orderArray.FirstOrDefault();
var currentSortOrderExcept=currentSortOrder.Where(x=>x.ID!=Convert.ToInt32(newNavItemID));
foreach(currentSortOrderExcept中的var x)
{
int sortOrderInt=orderarayids.IndexOf(orderarayids.Where(z=>int.Parse(z)=x.ID).ToList().FirstOrDefault())+1;
NavigationItem NavigationItem=新的NavigationItem()
{
HasChild=x.HasChild,
级别=x.级别,
NavID=x.NavID,
ID=x.ID,
ParentID=x.ParentID,
PageID=x.PageID,
URL=x.URL,
Title=x.Title,
SortOrder=sortOrderInt,
};
if(navigationItem.SortOrder!=null&&navigationItem.SortOrder!=0)
{
cmsUnitOfWork.NavigationItems.Update(x,navigationItem);
}
}
cmsUnitOfWork.Commit();
}
public void NavItemAdd(List orderArray、string NavID、string subNavID){
var newOrderArray=orderArray.Where(s=>!string.IsNullOrWhiteSpace(s)).ToList();
var orderArrayIDs=newOrderArray.Select(x=>x.Replace(“ContentItem”,下称“)).ToList();
NavID=NavID.Replace(“nav”和“”);
int NavIDInt=int.Parse(NavID);
int subNavIDInt=int.Parse(subNavID);
var existingNavItems=cmsUnitOfWork.NavigationItems.Find()。其中(x=>x.NavID==NavIDInt&&x.ParentID==subNavIDInt)。ToList();
int currentSortOrder=0;
如果(existingNavItems.Count()!=0)
{
currentSortOrder=existingNavItems.Max(x=>x.SortOrder);
}
var existingItems=existingNavItems.Select(x=>x.ID).ToList();
列出existingItemsString=existingItems.ConvertAll(x=>x.ToString()).ToList();
var newNavItemID=orderArray.Exception(existingItemsString.FirstOrDefault();
int newNavIDInt=int.Parse(newNavItemID);
var newNavItemList=cmsUnitOfWork.NavigationItems.Find().Where(x=>x.ID==newNavIDInt.ToList();
var newNavItem=newNavItemList.FirstOrDefault();
var parentNav=cmsUnitOfWork.NavigationItems.Find().Where(x=>x.ID==subNavIDInt.ToList().FirstOrDefault();
NavigationItem NavigationItemUpdate=新建NavigationItem()
{
ID=newNavItem.ID,
级别=2,
NavID=导航力,
PageID=newNavItem.PageID,
Title=newNavItem.Title,
URL=newNavItem.URL,
ParentID=子导航,
排序器=当前排序器+1
};
cmsUnitOfWork.NavigationItems.Update(newNavItem,NavigationItemUpdate);
cmsUnitOfWork.Commit();
}

我猜您在该上下文中启动了一个事务,但您从未处理它,也没有提交它。只是一个猜测,因为您没有任何代码(请发布代码)

也许您已经将cmsUnitOfWork声明为静态变量?必须在每次请求时创建和销毁上下文

对不起,我添加了两种服务方法。这些都是通过AJAX同时调用的。