سؤال

في LINQ إلى SQL، هل من الممكن التحقق لمعرفة ما إذا كان الكيان بالفعل جزءًا من سياق البيانات قبل محاولة إرفاقه؟

القليل من السياق إذا كان يساعد ...

لدي هذا الرمز في بلدي global.asax كوسيلة مساعدة.عادة، بين الطلبات، هذه ليست مشكلة.ولكن بعد تسجيل الدخول مباشرة، يتم الاتصال بهذا أكثر من مرة، وفي المرة الثانية ينتهي بي الأمر بمحاولة إرفاق ملف Member كائن في نفس وحدة العمل حيث تم إنشاؤه.

private void CheckCurrentUser()
{
    if (!HttpContext.Current.User.Identity.IsAuthenticated)
    {
        AppHelper.CurrentMember = null;
        return;
    }

    IUserService userService = new UserService();

    if (AppHelper.CurrentMember != null)
        userService.AttachExisting(AppHelper.CurrentMember);
    else
        AppHelper.CurrentMember = userService.GetMember(
            HttpContext.Current.User.Identity.Name,
            AppHelper.CurrentLocation);
}
هل كانت مفيدة؟

المحلول

أعتقد أن هناك طريقتين للقيام بذلك.

DataContext.TableName.Contains(Item)

أو نستخدم حقل المعرف.إذا تم إدراج العنصر في قاعدة البيانات، فسيتم تخصيص صف له.

if(Item.id == 0)
   DataContext.Insert(Item)
else
   DataContext.Update(Item)

نصائح أخرى

بدلاً من الارتباط بسياق بيانات جديد، لماذا لا نقوم فقط بإعادة الاستعلام عن الكائن في سياق البيانات الجديد؟إنها تعتقد أنها استراتيجية أكثر موثوقية وعديمة الجنسية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top