كم DataTable الأشياء التي يجب استخدامها في C# التطبيق ؟

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

سؤال

أنا مبرمج من ذوي الخبرة في تركة (بعد الشيئية) أداة تطوير و جعل التحول إلى C#/.صافي.أنا أكتب صغير واحد التطبيق المستخدم باستخدام SQL server CE 3.5.لقد قرأت المفاهيمي البيانات ذات الصلة doc قانون بلدي يعمل.

الآن أريد أن تأكد من أن أفعل ذلك "الحق" ، الحصول على بعض ردود الفعل من ذوي الخبرة .Net/SQL Server المبرمجون النوع لا تحصل من قراءة الوثيقة.

لقد لاحظت أن لدي كود مثل هذا في عدد قليل من الأماكن:

var myTableDataTable = new MyDataSet.MyTableDataTable();
myTableTableAdapter.Fill(MyTableDataTable);

... // other code

في واحد التطبيق المستخدم هل عادة فقط القيام بذلك مرة واحدة عند بدء تشغيل التطبيق ، إنشاء مثيل كائن DataTable لكل جدول ثم تخزين المرجع إلى أنه إذا كنت مجرد استخدام كائن واحد الذي هو بالفعل مليئة البيانات ؟ هذه الطريقة كنت من أي وقت مضى فقط قراءة البيانات من db مرة واحدة بدلا من يحتمل عدة مرات.أو هو فوق هذه صغيرة جدا لدرجة أنه لا يهم فقط (زائد يمكن أن تكون عكسية مع جداول كبيرة)?

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

المحلول

CE ، ربما غير مسألة.إذا كنت دفع هذا التطبيق إلى الآلاف من المستخدمين كانوا جميعا ضرب مركزية ديسيبل ، قد ترغب في قضاء بعض الوقت على التحسين.في واحدة للمستخدم سبيل المثال DB مثل CE ، إلا إذا كنت قد حصلت على البيانات التي يقول تحتاج إلى تحسين ، لن تنفق أي وقت القلق حول هذا الموضوع.من السابق لأوانه الأمثل ، إلخ.

نصائح أخرى

طريقة تقرر فاريس بين 2 قليل من الأشياء الرئيسية 1.البيانات ستكون يصل باستمرار 2.هناك الكثير من البيانات

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

على سبيل المثال, إذا كان لديك 10 واجهة المستخدم الرسومية الشاشات فقط استخدام myTableDataTable على 1 من قراءته إلا في تلك الشاشة.

الخيار حقا لا تعتمد على C# نفسها.أنه يأتي إلى أسفل إلى توازن بين:

  1. كيف وغالبا ما كنت تستخدم البيانات في الكود ؟
  2. هل البيانات من أي وقت مضى تغيير (و لا يهمك إذا كان لا)?
  3. ما هو نسبي (الوقت) تكلفة الحصول على البيانات مرة أخرى ، مقارنة مع كل شيء آخر التعليمات البرمجية الخاصة بك ؟
  4. كم قيمة هل وضعت على الأداء, مقابل المطور الجهد/الوقت (هذا التطبيق)?

كقاعدة عامة:لإنتاج التطبيقات ، حيث البيانات لا تتغير في كثير من الأحيان ، ربما خلق DataTable مرة واحدة ثم اضغط على إشارة كما ذكرت.وأود أيضا أن تنظر في وضع البيانات في كتابتها مجموعة/قائمة/قاموس بدلا من عام DataTable الدرجة, إذا كان أي شيء آخر لأنه من الأسهل السماح مترجم قبض بلدي أخطاء الطباعة.

عن أداة بسيطة التي تديرها بنفسك أن "يبدأ من لا شيء وتنتهي" ، ربما لا يستحق كل هذا الجهد.

أنت تسأل عن Windows CE.وفي ذلك عناية خاصة ، وأنا على الأرجح تفعل الاستعلام مرة واحدة فقط مع الاستمرار على النتائج.الهاتف المحمول برمجيات المصدر المفتوح إضافية القيود في البطاريات والمكان برامج سطح المكتب لا.أساسيا, نظام التشغيل المحمول يجعل الرصاصة #4 أكثر أهمية بكثير.

في كل مرة يمكنك إضافة آخر استرجاع دعوة من SQL, يمكنك إجراء مكالمات إلى المكتبات الخارجية في كثير من الأحيان, مما يعني أنك ربما تعمل لفترة أطول ، وتخصيص والإفراج عن المزيد من الذاكرة في كثير من الأحيان (الذي يضيف تجزئة) و ربما تسبب قاعدة البيانات إلى إعادة قراءة من ذاكرة فلاش.إنه على الأرجح أفضل بكثير التمسك البيانات وبمجرد الانتهاء من ذلك ، على افتراض أن كنت يمكن (انظر رصاصة #2).

أنه من الأسهل لمعرفة الجواب على هذا السؤال عندما كنت تفكر في البيانات باعتبارها "الدورة" من البيانات.يمكنك ملء البيانات.يمكنك العمل معهم ؛ ثم ضع البيانات مرة أخرى أو تجاهل ذلك عند الانتهاء من ذلك.لذلك عليك أن تسأل أسئلة مثل هذه:

  1. كيف الحالية لا تحتاج البيانات ؟ هل تحتاج دائما إلى غاية آخر ، أو قاعدة البيانات لا يغير من ذلك في كثير من الأحيان ؟
  2. ماذا تستخدم البيانات ؟ إذا كنت فقط باستخدام التقارير ، ثم يمكنك بسهولة ملء البيانات, تشغيل التقرير ، ثم رمي dataset بعيدا, و في المرة القادمة فقط جعل واحدة جديدة.التي سوف تعطيك المزيد من البيانات الحالية على أي حال.
  3. فقط كم البيانات الذي نتحدث عنه ؟ لقد قلت أنك تعمل مع مجموعة صغيرة نسبيا من البيانات, لذلك ليس هناك رئيسيا الذاكرة الأثر إذا قمت بتحميل كل شيء في الذاكرة والاحتفاظ بها هناك إلى الأبد.

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

الشيء الرئيسي تحتاج إلى أن يكون المعنية مع هذا السيناريو هو:ماذا لو إنهاء التطبيق بشكل غير طبيعي بسبب حادث انقطاع التيار الكهربائي ، وما إلى ذلك ؟ سيكون المستخدم يخسر كل ما قدمه من العمل ؟ ولكن كما يحدث البيانات هي سهلة للغاية تسلسل, بحيث يمكنك بسهولة إلى حد ما في تنفيذ "حفظ كل ذلك في كثير من الأحيان" إجراء تسلسل البيانات محتويات القرص وبالتالي فإن المستخدم لن تفقد الكثير من العمل.

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