سؤال

ما هي الطبقة التي هي أفضل طبقة لجعل مكالمات LinQ-SQL كقدم ()، insertonsubmit () إلخ.

على سبيل المثال، دعنا نقول أن لدي اثنين من الوالدين والطفل. طاولة الأطفال لديها مفتاح أجنبي على الوالدين (طاولة الأطفال يحتويون على عمود ParentID). أريد إدراج كائن الأصل والأشياء الطفل في DB.

باستخدام LinQ-SQL، يمكنني القيام بذلك.

Parent parent = new Parent();
Child child1 = new Child();
Child child2 = new Child();
//assign values to parent data members
//...

parent.Childs.Add(child1);
parent.Childs.Add(child2);

using (DataContext db = new DataContext())
{
   db.Parents.InsertOnSubmit(parent);
   db.SubmitOnChanges();  
}

هل يمكنني خلط رمز طبقة العرض التقديمي مع طبقة الوصول إلى البيانات؟ إذا كان الأمر كذلك، كيف يمكنني أن أفعل ذلك مع كائن طبقة تجارية بينهما؟

أخبرونى من فضلكم. شكرا.

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

المحلول

وجود الوصول إلى البيانات الحق في طبقة العرض التقديمي ربما لا يكون أفضل طريقة للقيام بذلك.

يمكنك تطبيق فئة كاتبة لها طرق تصل إلى DataContext.

Parent parent = new Parent();
Child child1 = new Child();
Child child2 = new Child();
//assign values to parent data members
//...

parent.Childs.Add(child1);
parent.Childs.Add(child2);    

using (var parentWriter = new ParentWriter())
{
  parentWriter.Insert(parent)
}

ثم في فئة المجمع

public class ParentWriter : IDisposable
{
  private DataContext _dc;

  public ParentWriter()
  {
    _dc = new DataContext();
  }

  public void Insert(Parent parent)
  {
    _dc.Parents.InsertOnSubmit(parent);
    _dc.SubmitOnChanges();
  }

  //IDisposable Members
  //...
}

هذا مثال مبسط ومختبر. لقد استخدمت تصميما مشابها في مشروع حديثة حيث لدينا كاتب محددة وفئات قارئ تقسيم الوصول إلى البيانات اعتمادا على ما نقوم به مع البيانات.

نصائح أخرى

لقد قمنا ببناء إطار N-Tier الكامل باستخدام L2S. لدينا طبقة UI مميزة وطبقة منطق الأعمال وطبقة الوصول إلى البيانات. يتم تمرير كياناتنا من واجهة المستخدم إلى طبقة العمل لعملية العمل والتحقق من الصحة، ثم مرت إلى DAL لعمليات DB. العكس صحيح أيضا. يقدم العميل طلبا لكيان يمر عبر Bll، من خلال DAL، والعودة إلى العميل.

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