مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

mohammad-zarei62

عضویت از 1396/12/18

ارور There is already an open DataReader associated with this Command which must be closed first در سرور!

  • شنبه 8 اردیبهشت 1397
  • 23:41
تشکر میکنم

سلام دوستان

من توی یه قسمتی از صفحه خودم مجبورم آمار پایین رو به مدیر شرکت نشون بدم:

-کاربران یک شرکت کلا چند کار دارند

-از این تعداد چند تاش انجام شده هست

-هفته قبل چند تا کار داشته

-دو هفته قبل چند تا کار داشته و ...

کدی که نوشتم برای اون قسمت اینه

@{
    LabkhandModel db = new LabkhandModel();
    //بدست آوردن تاریخ دیروز
    DateTime Yesterday = DateTime.Now.AddDays(-1);
    DateTime OneWeekPassed = DateTime.Now.AddDays(-8);
    DateTime TwoWeekPassed = DateTime.Now.AddDays(-15);

    int AllEventsForUser = 0;
    int AllEventsOk = 0;
    int AllEventsNotOk = 0;
    

}
<h2 class="padding25" data-step="1" data-intro="دوست خوبم الان توی قسمت داشبورد هستی و نمودار های عملکردی رو می بینی. همچنین به چند تا نکته دقت کن. اول اینکه: این راهنما رو از تبلت یا رایانه شخصی ببین. و دوم: برای پیمایش بین صفحاتِ راهنما می تونی از کلید چپ و راست کیبورد استفاده کنی" data-position='up' data-scrollTo='tooltip'>داشبورد</h2>


<div class="row">
    <div class="col-lg-12 animatedParent animateOnce z-index-46">
        <div class="panel panel-default">
            <div class="panel-heading clearfix">
                <div class="panel-title"> عملکرد کارکنان شرکت در یک نگاه</div>
                <ul class="panel-tool-options">
                    <li><a data-rel="collapse" href="#"><i class="icon-down-open"></i></a></li>
                    <li><a data-rel="close" href="#"><i class="icon-cancel"></i></a></li>
                </ul>
            </div>
            <div class="panel-body">
                <div class="table-responsive" data-step="4" data-intro="اینم لیست عملکرد یک ماهه همکارات، می تونی از کادر جستجو دنبال همکار یا همکاران دلخواه بگردی. یا از قسمت بالا سمت راست تعداد همکارانی که توی یه صفحه نشون داده میشه رو تعیین کنی. امتحان کن تا بهتر متوجه بشی" data-position='top' data-scrollTo='tooltip'>
                    <table class="table table-striped table-border table-hover dataTables-example">
                        <thead>
                            <tr>
                                <th title="نام">
                                    نام
                                </th>
                                <th title="کل رویدادها">
                                    کل رویدادها
                                </th>
                                <th title="کل رویداد ها تا دیروز">
                                    کل تا دیروز
                                </th>
                                <th title="رویداد های انجام شده تا دیروز">
                                    انجام شده تا دیروز
                                </th>
                                <th title="رویداد های باقیمانده تا دیروز">
                                    رویداد های باقیمانده
                                </th>
                                <th title="رویداد های یک هفته گذشته">
                                    یک هفته گذشته
                                </th>
                                <th title="میزان تغییر تعداد رویداد های هفته گذشته به دو هفته قبل">
                                    تغییر هفته گذشته
                                </th>
                                <th title="میزان تغییر تعداد رویداد های انجام شده هفته گذشته به دو هفته قبل">
                                    تغییر کارهای انجام شده هفته گذشته
                                </th>
                            </tr>
                        </thead>
                        <tbody>
                            @foreach (var user in db.Users.Where(u => u.CompanyId == db.Users.FirstOrDefault(c => c.UserName == User.Identity.Name).CompanyId && u.IsActive))
                            {

                                //تمام رویداد های کاربر
                                int AllUserEvents = user.Events.Where(e => e.UserId == user.UserId).Count();
                                //تمام رویداد های کاربر تا دیروز
                                int AllUserEventToYesterday = user.Events.Where(e => e.UserId == user.UserId && e.EventDate <= Yesterday).Count();

                                //تمام رویداد های کامل شده کاربر تا دیروز
                                int AllUserEventstoYesterdayAccomplished = user.Events.Where(e => e.UserId == user.UserId && e.EventDate <= Yesterday && e.Accomplished).Count();

                                int UserEventsBetweenYesterdayWeek = user.Events.Where(e => e.UserId == user.UserId && e.EventDate <= Yesterday && e.EventDate >= OneWeekPassed).Count();
                                int UserEventsBetweenOneWeekTwoWeek = user.Events.Where(e => e.UserId == user.UserId && e.EventDate <= OneWeekPassed && e.EventDate >= TwoWeekPassed).Count();
                                int UserEventsBetweenYesterdayWeekAccomplished = user.Events.Where(e => e.UserId == user.UserId && e.EventDate <= Yesterday && e.EventDate >= OneWeekPassed && e.Accomplished).Count();
                                int UserEventsBetweenOneWeekTwoWeekAccomplished = user.Events.Where(e => e.UserId == user.UserId && e.EventDate <= OneWeekPassed && e.EventDate >= TwoWeekPassed && e.Accomplished).Count();

                                if (user.UserName.ToLower() == User.Identity.Name)
                                {
                                    AllEventsForUser = AllUserEventToYesterday;
                                    AllEventsOk = AllUserEventstoYesterdayAccomplished;
                                    AllEventsNotOk = AllUserEventToYesterday - AllUserEventstoYesterdayAccomplished;

                                }

                                <tr data-step="5" data-intro="آمار کارکرد هر فرد توی ردیف خودش نشون داده میشه" data-position='right' data-scrollTo='tooltip'>
                                    <td>
                                        <a href="/Users/Dashboard/Details/@user.UserId">@user.Name</a>
                                    </td>
                                    <td data-step="6" data-intro="کل وظایفی که تا الان برای گذشته، حال و آینده این کاربر تعریف شده است" data-position='right' data-scrollTo='tooltip'>
                                        @AllUserEvents
                                    </td>
                                    <td data-step="7" data-intro="کل وظایفی که تا دیروز قرار بود انجام بشه" data-position='right' data-scrollTo='tooltip'>
                                        @AllUserEventToYesterday
                                    </td>
                                    <td data-step="8" data-intro="کل وظایفی که تا دیروز انجام شده" data-position='right' data-scrollTo='tooltip'>
                                        @AllUserEventstoYesterdayAccomplished
                                    </td>
                                    <td data-step="9" data-intro="وظایف انجام نشده تا دیروز" data-position='right' data-scrollTo='tooltip'>
                                        @{
                                            if ((AllUserEventToYesterday - AllUserEventstoYesterdayAccomplished) == 0)
                                            {
                                                <span class="green-color">تمام کارها انجام شده</span>
                                            }
                                            else
                                            {
                                                <span class="red-color">@(AllUserEventToYesterday - AllUserEventstoYesterdayAccomplished)</span>
                                            }
                                        }
                                    </td>
                                    <td data-step="10" data-intro="کل وظایف محوله در یک هفته گذشته" data-position='right' data-scrollTo='tooltip'>
                                        @UserEventsBetweenYesterdayWeek
                                    </td>
                                    <td data-step="11" data-intro="میزان تغییر تعداد وظایف یک هفته گذشته نصبت به دو هفته گذشته" data-position='right' data-scrollTo='tooltip'>
                                        @{
                                            if ((UserEventsBetweenYesterdayWeek - UserEventsBetweenOneWeekTwoWeek) > 0)
                                            {
                                                <span class="green-color pull-left left-to-Right"><i class="icon-up-dir"></i>@(UserEventsBetweenYesterdayWeek - UserEventsBetweenOneWeekTwoWeek)</span>
                                            }
                                            else if ((UserEventsBetweenYesterdayWeek - UserEventsBetweenOneWeekTwoWeek) == 0)
                                            {
                                                <span class="pull-left left-to-Right"><i class="icon-minus"></i>@(UserEventsBetweenYesterdayWeek - UserEventsBetweenOneWeekTwoWeek)</span>
                                            }
                                            else
                                            {
                                                <span class="red-color pull-left left-to-Right"><i class="icon-down-dir"></i>@(UserEventsBetweenYesterdayWeek - UserEventsBetweenOneWeekTwoWeek)</span>
                                            }
                                        }

                                    </td>
                                    <td data-step="12" data-intro="میزان تغییر تعداد وظایف انجام شده هفته گذشته به دو هفته قبل" data-position='right' data-scrollTo='tooltip'>
                                        @{
                                            if ((UserEventsBetweenYesterdayWeekAccomplished - UserEventsBetweenOneWeekTwoWeekAccomplished) > 0)
                                            {
                                                <span class="green-color pull-left left-to-Right"><i class="icon-up-dir"></i>@(UserEventsBetweenYesterdayWeekAccomplished - UserEventsBetweenOneWeekTwoWeekAccomplished)</span>
                                            }
                                            else if ((UserEventsBetweenYesterdayWeekAccomplished - UserEventsBetweenOneWeekTwoWeekAccomplished) == 0)
                                            {
                                                <span class="pull-left left-to-Right">@(UserEventsBetweenYesterdayWeekAccomplished - UserEventsBetweenOneWeekTwoWeekAccomplished)</span>
                                            }
                                            else
                                            {
                                                <span class="red-color pull-left left-to-Right"><i class="icon-down-dir"></i>@(UserEventsBetweenYesterdayWeekAccomplished - UserEventsBetweenOneWeekTwoWeekAccomplished)</span>
                                            }
                                        }

                                    </td>
                                </tr>
                            }
                        </tbody>
                        <tfoot>
                            <tr>
                                <th title="نام">
                                    نام
                                </th>
                                <th title="کل رویدادها">
                                    کل رویدادها
                                </th>
                                <th title="کل رویداد ها تا دیروز">
                                    کل تا دیروز
                                </th>
                                <th title="رویداد های انجام شده تا دیروز">
                                    انجام شده تا دیروز
                                </th>
                                <th title="رویداد های باقیمانده تا دیروز">
                                    رویداد های باقیمانده
                                </th>
                                <th title="رویداد های یک هفته گذشته">
                                    یک هفته گذشته
                                </th>
                                <th title="میزان تغییر تعداد رویداد های هفته گذشته به دو هفته قبل">
                                    تغییر هفته گذشته
                                </th>
                                <th title="میزان تغییر تعداد رویداد های انجام شده هفته گذشته به دو هفته قبل">
                                    تغییر کارهای انجام شده هفته گذشته
                                </th>
                            </tr>
                        </tfoot>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>

حالا توی لوکال خوب جواب میده ولی روی هاست نه . ارور System.InvalidOperationException: There is already an open DataReader associated with this Command which must be closed first رو میده. و میگه مال این خطه:

int AllUserEvents = user.Events.Where(e => e.UserId == user.UserId).Count();

پاسخ های این پرسش

تعداد پاسخ ها : 2 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 9 اردیبهشت 1397
  • 09:35

رشته اتصالتون رو قرار بدید

ببینید در رشته اتصال مقدار زیر باشه

MultipleActiveResultSets=True;

کاربر سایت

mohammad-zarei62

عضویت از 1396/12/18

  • یکشنبه 9 اردیبهشت 1397
  • 10:26
فعلا اونو گذاشتم. منتهی فکر کنم طبق مطالبی که خوندم دارم بیش از حد از منابع استفاده می کنم
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)