البيانات الديناميكية | LINQ TO SQL | التحقق من الصحة العامة

StackOverflow https://stackoverflow.com/questions/1630791

سؤال

لدي 5 الكيانات المختلفة التي البيانات الحيوي(مع LINQTOSQL) تم إنشاؤها.على إدراج(Insert.aspx) أي من هذه الكيانات ، إذا كان هناك خطأ ، أود أن يخطر المستخدم بأن خطأ حدث وربما تظهر بعض رسالة خطأ عامة.

1) أنا لا أتحدث عن العادية حقل مطلوب أخطاء ولكن شيئا من هذا القبيل "فريدة من نوعها انتهاك القيد"

2) لا يمكن أن تفعل ذلك لكل صفحة على حدة عن طريق القيام بشيء من هذا القبيل:

protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e) {
    if (e.Exception == null || e.ExceptionHandled)
    {
        Response.Redirect(table.ListActionPath);
    }
    else
    {
        //OtherErrors is the label on the page
        OtherErrors.Visible = true;
        OtherErrors.Text = e.Exception.Message;
        OtherErrors.DataBind();
        e.ExceptionHandled = true;
        e.KeepInInsertMode = true;

    }
}

3) ولكن كنت ترغب في خلق شيء عام جدا التي سوف تعمل على جميع إدراج جميع الكيانات

هل كانت مفيدة؟

المحلول 3

    public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
{

    try
    {
        base.SubmitChanges(failureMode);
    }
    catch (Exception e)
    {
        throw new ValidationException("Something is wrong", e);
    }

}

نصائح أخرى

يمكنك تخصيص التحقق عن طريق إنشاء معالج الحدث في ADO.NET إطار الكيان الدرجة:

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.DynamicData;
using System;
using System.Data;
using System.Data.Objects;

namespace AdventureWorksLTModel 
{
    public partial class AdventureWorksLTEntities 
    {
        partial void OnContextCreated() 
        {
            this.SavingChanges += new System.EventHandler(OnSavingChanges);
        }

        public void OnSavingChanges(object sender, System.EventArgs e) 
        {
            var stateManager = ((AdventureWorksLTEntities)sender).ObjectStateManager;
            var changedEntities = ObjectStateManager.GetObjectStateEntries (EntityState.Modified | EntityState.Added);

            // validation check logic
            throw new ValidationException("Something went wrong.");
        }

    }
}

أي التحقق من صحة الاستثناءات التي القيت في نموذج البيانات يتم القبض عليهم من قبل DynamicValidator التحكم.قوالب الصفحات المضمنة مع بيانات ديناميكية المشروع تحتوي على DynamicValidator التحكم ، الذي يعرض التصديقات أخطاء في الصفحة.

لا أستطيع بالكامل اختبار هذا الوضع الخاص بك ولكن يمكنك تجاوز SubmitChanges الأسلوب.

 public partial class MyNorthwindDataContext : NorthwindDataContext
 {

  public MyNorthwindDataContext()
  {

  }

  public override void SubmitChanges(System.Data.Linq.ConflictMode failureMode)
  {
   //catch error logic here...

   base.SubmitChanges(failureMode);
  }
 }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top