أفضل 50 سؤالاً وجواباً في مقابلات العمل المتعلقة بإطار عمل الكيانات (2026)

الاستعداد لمقابلة عمل حول إطار عمل الكيانات يعني توقع الأسئلة التي تكشف عن القدرات الحقيقية. تكشف أسئلة مقابلة إطار عمل الكيانات عن طريقة التفكير، والوعي بالأداء، وكيفية ترجمة المرشحين للمفاهيم إلى ممارسات عملية.
يُتيح إتقان إطار عمل الكيانات فرصًا وظيفية في مختلف مجالات التطوير الحديث، بدءًا من المنصات القائمة على البيانات وصولًا إلى الخدمات السحابية. يُسهم التدريب العملي في بناء القدرات التحليلية، وتعزيز المعرفة التقنية، ودعم فرق العمل. يُقدّر قادة التوظيف مهارات حل المشكلات العملية، والتصميم القابل للتطوير، وتوجيه الموظفين الجدد، وتوفير مسارات التطور الوظيفي للخريجين الجدد. اقرأ أكثر…
👈 تحميل مجاني بصيغة PDF: أسئلة وأجوبة مقابلات حول إطار عمل الكيانات
أهم أسئلة وأجوبة مقابلات العمل المتعلقة بإطار عمل الكيانات
1) ما هو إطار عمل الكيانات ولماذا يتم استخدامه؟
إطار الكيان (EF) هو MicrosoftORM (خريطة الكائنات العلائقية)pingإطار عمل لـ .NET يُبسط هذا التفاعل مع قواعد البيانات من خلال السماح للمطورين بالعمل مع البيانات ككائنات .NET ذات أنواع محددة بدقة بدلاً من لغة SQL الخام.هذا الامتصاصtracتُمكّن هذه التقنية المطورين من تنفيذ عمليات CRUD (إنشاء، قراءة، تحديث، حذف) باستخدام بنى C# المألوفة، ويتولى إطار العمل ترجمة هذه العمليات إلى استعلامات SQL مُحسّنة تلقائيًا. يُقلل Entity Framework من شيفرة الوصول إلى البيانات المُكررة، ويُحسّن قابلية الصيانة، ويُساعد في ضمان سلامة أنواع البيانات أثناء الترجمة.
على سبيل المثال، بدلاً من كتابة SQL، يمكنك استخدام:
var customers = context.Customers.Where(c => c.IsActive).ToList();
سيقوم EF بترجمة استعلام LINQ هذا إلى SQL، وتنفيذه على قاعدة البيانات، وإرجاع النتائج ككائنات.
2) اشرح الفرق بين Code أولاً، أولاً قاعدة البيانات، وأولاً النموذج.
يدعم إطار عمل الكيانات ثلاثة مناهج تطوير رئيسية:
| النهج | متى يجب استخدام | ما يحدث |
|---|---|---|
| Code الاسم الأول | مشاريع جديدة أو تصميم قائم على المجال | تقوم بتحديد فئات الكيانات. يقوم Entity Framework بإنشاء مخطط قاعدة البيانات من التعليمات البرمجية. |
| قاعدة البيانات أولاً | قاعدة البيانات الحالية | يقوم EF بإنشاء فئات الكيانات والسياق من مخطط موجود. |
| النموذج الأول | عندما تفضل التصميم المرئي | تقوم بتصميم النموذج في مصمم مرئي (مصمم الكيانات)، ويقوم EF بإنشاء كل من الفئات وقاعدة البيانات. |
يخدم كل نهج سيناريوهات مختلفة: Code الاسم الأول يحظى بشعبية في تطوير البرمجيات الرشيقة، قاعدة البيانات أولاً يُفضل استخدامه مع قواعد البيانات القديمة، و النموذج الأول يناسب الحالات التي يكون فيها النمذجة المرئية مهمة.
3) ما هو DbContext وما هو دوره في EF؟
DbContext هي الفئة الأساسية التي تدير جلسة مع قاعدة البيانات, tracتُجري ks تغييرات على الكيانات، وتُنسق عملية حفظ البيانات مرة أخرى في قاعدة البيانات. وهي تُمثل جسرًا بين تطبيق C# الخاص بك وقاعدة البيانات. من خلال DbContextأنت تحدد DbSet<TEntity> الخصائص، التي تمثل مجموعات من الكيانات وترتبط بالجداول في قاعدة البيانات.
على سبيل المثال:
public class AppDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
}
هنا، Products يعمل كمجموعة لتنفيذ عمليات CRUD. يستخدم EF هذا السياق لـ tracحالات الكائن k وإنشاء أوامر SQL على SaveChanges().
4) ما هي عمليات الترحيل في Entity Framework وكيف يتم استخدامها؟
هجرة هي آلية لـ track وتطبيق تغييرات المخطط تُضاف البيانات إلى قاعدة البيانات بمرور الوقت. ومع تطور نموذجك، تساعد عمليات الترحيل في الحفاظ على تزامن قاعدة البيانات دون الحاجة إلى تعديل نصوص SQL يدويًا. Code أولاً، يمكنك استخدام أوامر مثل:
Add-Migration InitialCreate Update-Database
يُنشئ هذا فئات ترحيل تُحدد تغييرات المخطط وتُطبقها على قاعدة البيانات. تُتيح عمليات الترحيل التحكم في إصدارات مخطط قاعدة البيانات وتُسهل التطوير التعاوني.
5) صف التحميل الكسول، والتحميل المبكر، والتحميل الصريح.
يُعد تحميل البيانات ذات الصلة بكفاءة أمرًا بالغ الأهمية في Entity Framework. إليك مقارنة:
| الإستراتيجيات | عندما يعمل | استخدام نموذجي |
|---|---|---|
| تحميل كسول | يتم تحميل البيانات ذات الصلة عند الوصول الأول | استخدمه عندما لا تكون البيانات ذات الصلة مطلوبة دائمًا. |
| تحميل حريصة | يتم تحميل البيانات ذات الصلة مسبقًا عبر .Include() |
استخدمه عندما تعلم أنك بحاجة إلى بيانات ذات صلة. |
| تحميل صريح | تم التحميل يدويًا بعد الاستعلام | يُتيح التحكم في وقت تحميل البيانات ذات الصلة بدقة. |
فمثلا:
var orders = context.Orders.Include(o => o.Customer).ToList(); // Eager
يساعد التحميل الكسول في تقليل الاستعلامات الأولية، ولكنه قد يتسبب في مشاكل الاستعلام N+1 إذا لم يتم استخدامه بعناية.
6) ما هو التغيير tracالملك في إطار عمل الكيانات؟
التغيير tracيُعدّ "king" الآلية الداخلية لـ EF لـ مراقبة تغييرات حالة الكيان بعد تنفيذ الاستعلام. عند استرجاع كيان بواسطة DbContextحيث يتم tracked. يتم تسجيل أي تعديلات على خصائصه، وعندما SaveChanges() عند استدعاء EF، يقوم بإنشاء SQL المناسب INSERT, UPDATE أو DELETE البيانات. لحالات القراءة فقط حيث tracالملك غير ضروري، AsNoTracking() يحسّن الأداء عن طريق تعطيل التغيير tracملك.
7) كيف يتعامل إطار عمل الكيانات مع تعارضات التزامن؟
يضمن التحكم في التزامن عدم قيام عدة مستخدمين بتحديث نفس البيانات عن غير قصد، مما يؤدي إلى استبدال تغييرات بعضهم البعض. يستخدم Entity Framework التزامن المتفائل بشكل افتراضي. يتضمن أحد الأساليب الشائعة إضافة رمز التزامن (مثل أ RowVersion (الطابع الزمني). يتحقق EF من هذا الرمز المميز أثناء SaveChanges()وإذا كان يختلف عن إصدار قاعدة البيانات، DbUpdateConcurrencyException يتم طرح هذا الاستثناء، مما يشير إلى وجود تعارض. يمكن للمطورين بعد ذلك معالجة هذا الاستثناء لإعادة المحاولة أو حل اختلافات البيانات.
8) ما هي خصائص التنقل في EF؟
تُحدد خصائص التنقل العلاقات بين الكيانات. وهي تسمح لـ Entity Framework بـ التنقل بين العلاقات (على سبيل المثال، علاقة واحد إلى متعدد) بدون عمليات ربط يدوية:
public class Order
{
public int Id { get; set; }
public Customer Customer { get; set; }
}
هنا، Customer هي خاصية ربط التنقل Order إلى ما يتصل بها Customerيستخدم Entity Framework هذه الخصائص لإنشاء العلاقات والروابط تلقائيًا أثناء الاستعلامات. وتعمل خصائص التنقل جنبًا إلى جنب معها. مفاتيح خارجية لنمذجة العلاقات.
9) ما هو الغرض من AsNo؟Tracking()؟
AsNoTracking() تعطيل التغيير tracالملك للاستفسار، وهو أمر مفيد لـ للقراءة فقط العمليات التي لا تنوي فيها تحديث الكيانات المسترجعة. هذا يحسن الأداء عن طريق تقليل استخدام الذاكرة و tracيُعدّ هذا الأمر بالغ الأهمية. وهو مفيد بشكل خاص عند جلب مجموعات بيانات كبيرة دون تعديلها.
10) ما هي الاستعلامات المُجمّعة ومتى يجب استخدامها؟
تُعدّ الاستعلامات المُجمّعة أسلوبًا لتحسين الأداء. عند تنفيذ استعلام LINQ، يقوم Entity Framework عادةً بترجمته إلى SQL في كل مرة. أما مع الاستعلامات المُجمّعة، فتتم هذه الترجمة مرة واحدة فقط، ويُعاد استخدام الدالة الناتجة، مما يُقلل من الحمل الزائد للاستعلامات المُنفّذة بشكل متكرر أو المُعقدة. استخدمها في ارتفاع حركة المرور سيناريوهات يتم فيها تشغيل نفس الاستعلام بشكل متكرر بمعلمات مختلفة.
11) ما هي حالات الكيان في Entity Framework، وكيف تؤثر على SaveChanges()؟
إطار كيان tracks كل كيان حالة لتحديد عملية قاعدة البيانات التي يجب تنفيذها أثناء SaveChanges(). الكيانات الرئيسية هي:
| الولايه او المحافظه | الوصف | Operaتم تشغيل tion |
|---|---|---|
| وأضاف | الكيان الجديد المراد إدراجه | INSERT |
| تم التعديل | تم تحديث الكيان الحالي | UPDATE |
| حذف | تم وضع علامة على الكيان لإزالته | DELETE |
| دون تغيير | لم يتم الكشف عن أي تغييرات | بدون سلوفان |
| منفصل | ليس tracked حسب السياق | بدون سلوفان |
عندما تتصل SaveChanges()يقوم Entity Framework بفحص حالات الكيانات وتنفيذ أوامر SQL المقابلة. على سبيل المثال، إضافة كيان جديد إلى DbSet سيتم وضع علامة وأضاف، مما أدى إلى INSERT الاستعلام.
على سبيل المثال:
context.Entry(product).State = EntityState.Modified; context.SaveChanges();
هذا يُحدّث سجل قاعدة البيانات الخاص بالكيان بشكل صريح.
فهم الولايات يضمن تحكمًا أفضل في مزامنة البيانات والأداء.
12) ما هي مزايا وعيوب استخدام Entity Framework؟
يوفر إطار عمل الكيانات فوائد قوية ولكنه يوفر أيضًا بعض المقايضات، اعتمادًا على حالة الاستخدام الخاصة بك.
| المزايا | عيوب |
|---|---|
| يُسهّل الوصول إلى البيانات من خلال LINQ ونماذج الكائنات. | زيادة الحمل على الأداء مقارنةً بـ ADO.NET الخام. |
| يقلل من حجم كود SQL المتكرر. | قد تؤدي الاستعلامات المعقدة إلى توليد لغة SQL غير فعالة. |
| يدعم العديد من مزودي قواعد البيانات. | يصعب تصحيح أخطاء عبارات SQL المُولّدة. |
| يتميز بنوع بيانات قوي، مما يحسن من سلامة وقت الترجمة. | من المحتمل حدوث تعارضات في عمليات الترحيل ضمن فرق العمل الكبيرة. |
| يُمكّن من إنتاج النماذج الأولية بسرعةping مع Code أولا. | Less التحكم في الاستعلامات الدقيقة. |
بالنسبة للأنظمة واسعة النطاق التي تتطلب أقصى أداء، قد يظل بإمكان المطورين المزج SQL الخام مع Entity Framework للتحسين.
13) كيف يتعامل إطار عمل الكيانات مع العلاقات (واحد إلى واحد، واحد إلى متعدد، متعدد إلى متعدد)؟
يدير إطار عمل الكيانات العلاقات عبر خصائص التنقل و ارتباطات المفاتيح الأجنبية.
أنواع العلاقات هي:
| نوع العلاقة | الوصف | مثال |
|---|---|---|
| واحد لواحد | لكل كيان مثيل واحد مرتبط به. | User ↔ UserProfile |
| واحد لكثير | يرتبط كيان واحد بالعديد من الكيانات الأخرى. | Customer → Orders |
| الكثير للكثيرين | ترتبط كيانات متعددة ببعضها البعض. | Student ↔ Course |
مثال على واحد لكثير صلة:
public class Customer
{
public int CustomerId { get; set; }
public ICollection<Order> Orders { get; set; }
}
يقوم EF تلقائيًا بإنشاء المفاتيح الخارجية ومعالجتها قواعد الحذف المتتالي اعتمادا على التكوين.
يمكنك أيضا استخدام طلاقة API للحصول على خريطة علاقات أكثر وضوحًاping.
14) ما الفرق بين LINQ to Entities و LINQ to SQL؟
| الميزات | LINQ للكيانات | LINQ إلى SQL |
|---|---|---|
| قواعد البيانات المدعومة | متعدد (خادم SQL، Oracle, MySQL، وما إلى ذلك) | خادم SQL فقط |
| الإطار الأساسي | إطار كيان | ADO.NET |
| الموديل | نموذج الكيان المفاهيمي | جداول قاعدة البيانات فقط |
| التخطيط | خريطة معقدةping (الإرث، العلاقات) | خريطة الجدول المباشرping |
| الدعم المستقبلي | مدعومة بنشاط |
LINQ للكيانات يُعد جزءًا من إطار عمل الكيانات وهو أكثر تنوعًا، بينما LINQ إلى SQL يقتصر على خادم SQL وحالات الاستخدام الأبسط.
لذا، يُنصح باستخدام LINQ to Entities لتطوير المشاريع على مستوى المؤسسة.
15) ما الفرق بين ObjectContext و DbContext؟
| الميزات | سياق الكائن | DbContext |
|---|---|---|
| الإطار | الإصدارات السابقة من EF | واجهة برمجة تطبيقات مبسطة في EF 4.1+ |
| تعقيد | أكثر مطولا | خفيف الوزن وسهل |
| هاملت | أسرع قليلاً لكن استخدامه أصعب | مبسط بأقل قدر من النفقات العامة |
| التغيير Tracking | مطلوب تكوين يدوي | أوتوماتيك tracملك |
| الاستخدام المفضل | الأنظمة القديمة | مشاريع EF الحديثة / EF Core |
DbContext يغلف داخليًا ObjectContext لكنها توفر واجهة برمجة تطبيقات (API) أنظف وأكثر سهولة في الاستخدام. ينبغي أن تستخدم معظم تطبيقات .NET الحالية هذه الواجهة. DbContext.
16) اشرح دورة حياة الكيان في إطار عمل الكيانات.
تصف دورة حياة الكيان حالته تحولات الدولة من الخلق إلى الاستمرار:
- خلق – يتم إنشاء الكيان في الذاكرة (الحالة: منفصل).
- التعلق – تمت إضافتها إلى السياق عبر
DbSet.Add()(ولاية: وأضاف). - تعديل – يتم اكتشاف التغييرات تلقائيًا (الحالة: تم التعديل).
- إصرار -
SaveChanges()تم استدعاء أوامر SQL ← تم تنفيذها. - شطب – الكيان المصنف على أنه حذف وتم حذفها من قاعدة البيانات.
يساعد فهم دورة الحياة هذه في تصحيح أخطاء البيانات وتحسين إدارة سياق EF.
17) ما فائدة واجهة برمجة التطبيقات Fluent API في Entity Framework؟
استخدم طلاقة API يوفر طريقة برمجية لتكوين علاقات النموذج والقيود والخرائطpings، وغالبًا ما تستخدم في OnModelCreating() طريقة خاصة بك DbContext.
فهو يوفر تحكمًا دقيقًا في الإعدادات التي تعليقات البيانات لا أستطيع التعبير.
على سبيل المثال:
modelBuilder.Entity<Customer>()
.HasMany(c => c.Orders)
.WithOne(o => o.Customer)
.HasForeignKey(o => o.CustomerId);
تُعد واجهة برمجة التطبيقات Fluent API قوية بشكل خاص في عملية التهيئة. المفاتيح المركبة, العلاقات المتعددة الأطرافو قواعد التتالي.
18) ما هي التعليقات التوضيحية للبيانات في إطار عمل الكيانات؟
التعليقات التوضيحية للبيانات هي سمات تُطبّق هذه الأدوات مباشرةً على فئات النموذج أو خصائصه لتحديد سلوك المخطط. وهي أبسط من واجهة برمجة التطبيقات السلسة (Fluent API) ولكنها أقل مرونة.
على سبيل المثال:
public class Product
{
[Key]
public int ProductId { get; set; }
[Required]
[StringLength(50)]
public string Name { get; set; }
}
تُحدد التعليقات التوضيحية المفاتيح، وأطوال السلاسل النصية، والحقول المطلوبة، والعلاقات. في الحالات المتقدمة، عادةً ما يجمع المطورون بين شروح البيانات و طلاقة API.
19) ما الفرق بين tracكيد وأونtracالكيانات ked في EF Core؟
| النوع | الوصف | الحلول المقترحة |
|---|---|---|
| Tracكيانات ked | تتم مراقبته بواسطة DbContext للتغييرات. |
السلوك الافتراضي للتحديثات. |
| Untracكيانات ked | غير مراقب؛ تم استرجاعه باستخدام .AsNoTracking(). |
مثالي لعمليات القراءة فقط. |
Tracتستهلك كيانات ked المزيد من الذاكرة ولكنها تسمح لـ EF باكتشاف التغييرات تلقائيًا.
Untracتعزيز الكيانات ked أداء في سيناريوهات القراءة العالية والتحديث المنخفض.
20) كيف يمكنك تنفيذ استعلامات SQL الخام في Entity Framework؟
يسمح إطار عمل الكيانات بتنفيذ استعلامات SQL الخام للاستعلامات المخصصة أو ذات الأهمية البالغة للأداء.
var result = context.Products
.FromSqlRaw("SELECT * FROM Products WHERE Price > 100")
.ToList();
بالنسبة للأوامر غير الاستعلامية:
context.Database.ExecuteSqlRaw("DELETE FROM Products WHERE Discontinued = 1");
استخدم هذه الميزة بحذر لتجنب حقن SQL والحفاظ على مرونة مستقلة عن قواعد البيانات.
21) ما الفرق بين Entity Framework و Entity Framework Core؟
يختلف إطار عمل الكيانات (EF) وإطار عمل الكيانات الأساسي (EF Core) في البنية والقدرات ودعم الأنظمة الأساسية المتعددة.
| الميزات | إطار عمل الكيانات 6 (EF6) | جوهر إطار الكيان |
|---|---|---|
| المنظومة | إطار عمل .NET فقط | متعدد المنصات (.NET 5/6/7) |
| معمار | استنادًا إلى سياق الكائن | خفيفة الوزن وقياسية |
| هاملت | أبطأ في بعض الاستعلامات | توليد استعلامات مُحسّن |
| دعم LINQ | ناضجة ولكن محدودة | تحسين الترجمة والمزامنة غير المتزامنة |
| مقدمي قواعد البيانات | خادم قاعدة البيانات، Oracle | عديد (MySQL, PostgreSQL, SQLite، وما إلى ذلك) |
| شرح المميزات: | ناضج (على سبيل المثال، التحميل الكسول) | حديثة (مثل خصائص الظل، والمرشحات العامة) |
EF Core هو حديثة، متطورة بشكل فعال يُعد هذا الإصدار الخيار الموصى به لمشاريع .NET الجديدة نظرًا لمرونته وأدائه.
22) كيف تعمل المعاملات في إطار عمل الكيانات؟
تضمن المعاملات في إطار عمل الكيانات تكامل البيانات عندما يجب أن تنجح أو تفشل عمليات متعددة معًا. بشكل افتراضي، يقوم EF بتغليف SaveChanges() داخل المعاملة. للتحكم اليدوي:
using (var transaction = context.Database.BeginTransaction())
{
try
{
context.Customers.Add(new Customer());
context.SaveChanges();
context.Orders.Add(new Order());
context.SaveChanges();
transaction.Commit();
}
catch
{
transaction.Rollback();
}
}
وهذا يضمن الذرية - إذا فشل أي أمر، يتم التراجع عن جميع التغييرات.
يتكامل EF أيضًا مع System.Transactions لدعم المعاملات الموزعة.
23) اشرح استراتيجيات التوريث TPH و TPT و TPC في Entity Framework.
يدعم إطار عمل الكيانات ثلاثة أنواع رئيسية من خرائط التوريثping استراتيجيات لنمذجة التسلسلات الهرمية للفئات.
| الإستراتيجيات | الوصف | مثال | المزايا | عيوب |
|---|---|---|---|---|
| TPH (جدول لكل تسلسل هرمي) | تشترك جميع الفئات في جدول واحد؛ ويحدد عمود التمييز النوع. | شائع في EF Core. | استعلامات بسيطة وسريعة. | قد يصبح الجدول كبيرًا ومتفرقًا. |
| TPT (جدول لكل نوع) | لكل فئة فرعية جدولها الخاص. | يتم ربط كل فئة مشتقة على حدة. | مخطط مُعَيَّر. | عمليات الانضمام أبطأ في التسلسلات الهرمية الكبيرة. |
| جدول حسب فئة الخرسانة (TPC) | لكل فئة جدولها الخاص الذي يحتوي على أعمدة مكررة. | تم تحديد كل كيان على حدة. | قراءات عالية الأداء. | تكرار البيانات. |
يفضل معظم المطورين الهيدروكربونات النفطية وذلك لبساطته، إلا إذا اقتضت متطلبات التطبيع أو الأداء خلاف ذلك.
24) كيف تتعامل مع ضبط الأداء في Entity Framework؟
لتحسين أداء Entity Framework:
- استعمل
AsNoTracking()للاستعلامات للقراءة فقط. - حمولة متلهفة الكيانات ذات الصلة الضرورية فقط
.Include(). - تجنب الاستعلامات من النوع N+1 باستخدام الإسقاطات أو
Select(). - استخدم الاستعلامات المُجمّعة للعمليات التي يتم تشغيلها بشكل متكرر.
- إدخالات/تحديثات متعددة دفعة واحدة مع
AddRange()وSaveChanges(). - تعطيل خاصية الكشف التلقائي عن التغييرات للعمليات بالجملة:
context.Configuration.AutoDetectChangesEnabled = false; - استخدم التخزين المؤقت والترقيم. لمجموعات البيانات الكبيرة.
يمكن لتطبيق EF المُحسَّن جيدًا أن يقترب من أداء ADO.NET مع الحفاظ على إنتاجية المطور.
25) ما هي الخاصية الظلية في Entity Framework Core؟
A مجلس العقارات موجود في نموذج EF ولكن ليس في فئة الكيان. يتم الحفاظ عليه بواسطة EF في التغيير tracker وتم تخزينها في قاعدة البيانات.
على سبيل المثال:
modelBuilder.Entity<Order>()
.Property<DateTime>("LastUpdated");
يسمح هذا لـ EF بتخزين بيانات وصفية إضافية (مثل الطوابع الزمنية ومعلومات التدقيق) دون تعديل فئة الكيان.
يمكنك الوصول إلى خصائص الظل عبر:
var value = context.Entry(order).Property("LastUpdated").CurrentValue;
تُعد خصائص الظل مثالية لسيناريوهات التسجيل أو التدقيق.
26) ما هي محولات القيمة في EF Core؟
تتيح محولات القيم في EF Core تحويل قيم الخصائص عند القراءة من قاعدة البيانات أو الكتابة إليها.
على سبيل المثال، لتخزين قيمة تعدادية كسلسلة نصية:
modelBuilder.Entity<Employee>()
.Property(e => e.Status)
.HasConversion(
v => v.ToString(),
v => (EmployeeStatus)Enum.Parse(typeof(EmployeeStatus), v));
يعزز هذا المرونة لأنواع البيانات المخصصة مثل enum, bool أو DateTimeOffset.
تُستخدم محولات القيمة أيضًا لـ التشفير، أو الضغط، أو الإخفاء من البيانات الحساسة.
27) ما هي عوامل تصفية الاستعلام العالمية، وكيف تعمل؟
تتيح عوامل تصفية الاستعلامات العامة تطبيق الشروط تلقائيًا على جميع الاستعلامات الخاصة بكيان معين.
هذا مفيد بشكل خاص ل الحذف المؤقت or تعدد المستأجرين.
على سبيل المثال:
modelBuilder.Entity<Employee>()
.HasQueryFilter(e => !e.IsDeleted);
كل استعلام يتم تنفيذه على Employee يستبعد النظام تلقائيًا السجلات المحذوفة مؤقتًا، ما لم يتم تجاوز ذلك صراحةً.
تعمل المرشحات العالمية على تحسين سهولة الصيانة وأمن البيانات.
28) كيف يمكنك اختبار كود Entity Framework باستخدام اختبارات الوحدة؟
لاختبار منطق EF دون الوصول إلى قاعدة بيانات حقيقية، استخدم قواعد البيانات في الذاكرة or السخرية:
- الخيار 1: موفر الذاكرة الداخلية
var options = new DbContextOptionsBuilder<AppDbContext>() .UseInMemoryDatabase("TestDb") .Options; - الخيار الثاني: محاكاة سياق قاعدة البيانات
قلدDbSetباستخدام مكتبات مثل موك لإجراء اختبارات معزولة.
ينبغي أن تتحقق اختبارات الوحدة مما يلي:
- صحة الاستعلام (عبر LINQ)
- اتساق البيانات بعد
SaveChanges() - منطق المستودع
يضمن الاختبار باستخدام EF Core InMemory السرعة ويتجنب الاعتماد على SQL Server.
29) اشرح أنماط المستودع ووحدة العمل في EF.
يساعد هذان النمطان المعماريان (ABS)tracالوصول إلى البيانات و الحفاظ على اتساق المعاملات.
| نمط | الهدف | مثال التنفيذ |
|---|---|---|
| مستودع | يغلف عمليات CRUD لكل كيان. | IRepository<T> المواجهة مع Add(), GetAll()، الخ. |
| وحدة العمل | يقوم بتنسيق عدة مستودعات ضمن معاملة واحدة. | SaveChanges() يعمل كحدود التزام. |
على سبيل المثال:
public class UnitOfWork : IUnitOfWork
{
private readonly AppDbContext _context;
public void Commit() => _context.SaveChanges();
}
هذه الأنماط تتحسن قابلية الاختبار, إعادة استخدام الكودو فصل المخاوف في تطبيقات المؤسسات الكبيرة.
30) ما الفرق بين التحميل الفوري والتحميل الإسقاطي؟
| البعد | تحميل حريصة | تحميل الإسقاط |
|---|---|---|
| الهدف | يقوم بتحميل البيانات ذات الصلة مسبقًا | يقوم بتحميل حقول أو خصائص محددة فقط |
| الأسلوب | .Include() |
.Select() |
| مثال | context.Orders.Include(o => o.Customer) |
context.Orders.Select(o => new { o.Id, o.Customer.Name }) |
| هاملت | يجلب الكائنات الكاملة | يسترجع الحد الأدنى من البيانات |
| الحلول المقترحة | عند الحاجة إلى كيانات ذات صلة للمعالجة | عندما تحتاج إلى بيانات خفيفة الوزن محددة |
تحميل الإسقاط هو تحسين الأداء يقلل ذلك من استهلاك الذاكرة عن طريق تحديد الأعمدة الضرورية فقط.
31) ما هي المعترِضات في Entity Framework Core؟
تتيح أدوات الاعتراض في EF Core للمطورين اعتراض وتعديل عمليات قاعدة البيانات مثل تنفيذ الاستعلام، وإنشاء الأوامر، وفتح الاتصال.
إنها تعمل كمكونات وسيطة بين EF ومزود قاعدة البيانات.
على سبيل المثال: تسجيل جميع أوامر SQL المنفذة.
public class CommandInterceptor : DbCommandInterceptor
{
public override void ReaderExecuting(
DbCommand command,
CommandEventData eventData,
InterceptionResult<DbDataReader> result)
{
Console.WriteLine($"Executing SQL: {command.CommandText}");
base.ReaderExecuting(command, eventData, result);
}
}
تقوم بتسجيله في DbContextOptionsBuilder:
optionsBuilder.AddInterceptors(new CommandInterceptor());
الفوائد:
- تسجيل محسّن
- الأمان (التحقق من صحة الاستعلام)
- التدقيق والأداء tracملك
32) كيف يتعامل EF Core مع العمليات غير المتزامنة؟
يدعم Entity Framework Core بشكل كامل البرمجة غير المتزامنة من خلال أساليب مثل SaveChangesAsync(), ToListAsync()و FirstOrDefaultAsync().
يساعد التنفيذ غير المتزامن تحسين قابلية التوسع في تطبيقات الويب عن طريق تحرير الخيوط أثناء انتظار عمليات قاعدة البيانات المقيدة بالإدخال/الإخراج.
على سبيل المثال:
var customers = await context.Customers
.Where(c => c.IsActive)
.ToListAsync();
تُعد العمليات غير المتزامنة فعالة بشكل خاص في الإنتاجية العالية واجهات برمجة تطبيقات ASP.NET Core والخدمات المصغرة، مما يقلل من المكالمات المعطلة ويحسن أوقات الاستجابة.
33) ما هي مرونة الاتصال في Entity Framework Core؟
تساعد مرونة الاتصال تطبيقك التعافي التلقائي من حالات فشل قاعدة البيانات المؤقتة، مثل انقطاعات الشبكة أو مهلة SQL.
يمكن تهيئته على النحو التالي:
optionsBuilder.UseSqlServer(
connectionString,
options => options.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null)
);
هنا، سيعيد EF محاولة العمليات الفاشلة حتى 5 مرات مع وجود تأخيرات.
وهذا مفيد بشكل خاص في بيئات مستضافة على السحابة مثل Azure SQL حيث تكون الأخطاء العابرة شائعة.
34) ما هي أنواع الكيانات المملوكة في EF Core؟
تتيح الكيانات المملوكة إمكانية النمذجة كائنات القيمة التي تعتمد كلياً على دورة حياة كيان آخر.
يتشاركون نفس الطاولة مع مالكهم ولا يمكنهم الوجود بشكل مستقل.
على سبيل المثال:
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Customer
{
public int Id { get; set; }
public Address Address { get; set; }
}
ترتيب:
modelBuilder.Entity<Customer>().OwnsOne(c => c.Address);
حالة الاستخدام:
مفاهيم النمذجة مثل العنوان, مال أو مقاسات التي ليس لها هوية خاصة بها.
35) كيف يمكنك تنفيذ عمليات الحذف الناعم في Entity Framework Core؟
تقوم عمليات الحذف الناعم بتحديد السجلات على أنها محذوفة بدلاً من إزالتها فعلياً.
يتم تنفيذها باستخدام علم بولياني و عوامل تصفية الاستعلام العامة.
modelBuilder.Entity<Employee>()
.HasQueryFilter(e => !e.IsDeleted);
في عملية الحذف:
employee.IsDeleted = true; context.Update(employee); context.SaveChanges();
المزايا:
- حفظ البيانات التاريخية
- التعافي أسهل
العيوب:
- جداول قواعد البيانات الأكبر حجماً
- يتطلب منطق تصفية دقيق
36) ما هو النموذج المُجمَّع في EF Core ولماذا يتم استخدامه؟
في معالج EF Core 6+، النماذج المجمعة يسمح هذا بتجميع بيانات تعريف نموذج EF مسبقًا في تجميع .NET، مما يقلل من وقت بدء التشغيل والحمل الزائد لوقت التشغيل.
الخطوات التالية:
- قم بتشغيل الأمر:
dotnet ef dbcontext optimize - يقوم EF بإنشاء ملف نموذج مُجمّع مسبقًا يقوم التطبيق بتحميله بشكل أسرع أثناء وقت التشغيل.
الاستفادة: يقلل من زمن التهيئة بنسبة 30-40%، خاصة في التطبيقات الكبيرة التي تحتوي على العديد من الكيانات.
حالة الاستخدام: الخدمات المصغرة عالية الأداء والبيئات الخالية من الخوادم.
37) كيف يمكنك تطبيق التخزين المؤقت في Entity Framework؟
تساعد خاصية التخزين المؤقت على تقليل استعلامات قاعدة البيانات المتكررة. وهناك مستويان رئيسيان:
| النوع | الوصف | مثال |
|---|---|---|
| ذاكرة التخزين المؤقت من المستوى الأول | مدمج، لكل DbContext مثل |
إدارة تلقائية |
| ذاكرة التخزين المؤقت من المستوى الثاني | ذاكرة تخزين مؤقتة خارجية مشتركة بين السياقات | استخدم المكتبات مثل EFCoreSecondLevelCacheInterceptor |
مثال على التخزين المؤقت من المستوى الثاني:
services.AddEFSecondLevelCache(options =>
{
options.UseMemoryCacheProvider().DisableLogging(false);
});
يؤدي هذا إلى تحسين الأداء بشكل كبير في التطبيقات التي تتطلب قراءة مكثفة عن طريق تجنب عمليات الوصول المتكررة إلى قاعدة البيانات.
38) كيف يدير EF Core رموز التزامن والطوابع الزمنية؟
تمنع رموز التزامن تحديثات متضاربة في بيئات متعددة المستخدمين.
يمكنك تحديد خاصية كرمز تزامن باستخدام [ConcurrencyCheck] or [Timestamp] السمة.
على سبيل المثال:
public class Product
{
public int Id { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
}
عند حدوث تحديث، يقوم EF بتضمين هذا العمود في WHERE الشرط.
في حالة عدم تطابق القيم، أ DbUpdateConcurrencyException يتم رميها — تأكد التحكم المتفائل في التزامن.
39) كيف يتم تطبيق التدقيق (إنشاء، تعديل، حذف) trac(ملك) في EF Core؟
التدقيق tracبيانات تعريفية مثل من قام بإنشاء أو تعديل أو حذف السجلات.
يمكنك تجاوز SaveChanges():
public override int SaveChanges()
{
var entries = ChangeTracker.Entries()
.Where(e => e.Entity is IAuditable &&
(e.State == EntityState.Added || e.State == EntityState.Modified));
foreach (var entry in entries)
{
var auditable = (IAuditable)entry.Entity;
auditable.LastModified = DateTime.UtcNow;
}
return base.SaveChanges();
}
واجهة:
public interface IAuditable
{
DateTime Created { get; set; }
DateTime LastModified { get; set; }
}
تعمل هذه الطريقة على مركزة منطق التدقيق، مما يضمن حوكمة بيانات متسقة.
40) ما هي أفضل الممارسات لاستخدام Entity Framework في تطبيقات المؤسسات؟
| الفئة | أفضل ممارسة | بينيفت كوزميتيكس |
|---|---|---|
| هاملت | استعمل AsNoTracking() والتوقعات للاستعلامات للقراءة فقط. |
يقلل من النفقات العامة. |
| تصميم | تطبيق أنماط المستودع ووحدة العمل. | يحسن من سهولة الصيانة. |
| الأمن والحماية | استخدم الاستعلامات المُعَلَّمة لتجنب حقن SQL. | حماية البيانات. |
| التوسعة | استخدم تجميع الاتصالات والأساليب غير المتزامنة. | يتحمل الأحمال العالية. |
| هجرة | استخدم عمليات الترحيل الآلية مع التحكم في الإصدارات. | يبسط إدارة المخططات. |
| الاعداد | قم بإخراج سلاسل الاتصال والأسرار إلى مصادر خارجية. | عزل بيئي أفضل. |
| الاختبار | استخدم موفر InMemory لاختبارات الوحدة. | تشغيل الاختبارات بشكل أسرع. |
| تسجيل | قم بتمكين تسجيل EF للحصول على رؤى حول الأداء. | تسهيل عملية تصحيح الأخطاء. |
تضمن هذه الممارسات قوي، قابل للتطوير، وقابل للصيانة تطبيقات مبنية على إطار عمل الكيانات (Entity Framework).
41) كيف يمكنك تحسين استعلامات LINQ لتحسين ترجمة SQL في Entity Framework؟
يقوم إطار عمل الكيانات بتحويل استعلامات LINQ إلى SQL تلقائيًا، ولكن قد تؤدي الأنماط غير الفعالة إلى استعلامات SQL بطيئة أو زائدة عن الحاجة. يضمن تحسين LINQ أن يقوم ORM بتوليد استعلامات قاعدة بيانات عالية الأداء.
تقنيات التحسين:
استخدام الإسقاطات:
- حدد الأعمدة المطلوبة فقط بدلاً من الكيانات بأكملها.
- تجنب التقييم من جانب العميل:
احرص دائمًا على تطبيق عملية التصفية. في SQL، ليس في الذاكرة. يُصدر EF Core تحذيراً عند إجراء التقييم من جانب العميل. - استعمل
AsNoTracking()للبيانات للقراءة فقط. - الاستفادة من الاستعلامات المُجمّعة لعمليات LINQ المتكررة.
- تجنب ما لا لزوم له
.Include()المكالمات — قم بتضمين البيانات ذات الصلة فقط عند الحاجة.
var customers = context.Customers
.Select(c => new { c.Id, c.Name })
.ToList();
var orders = context.Orders.AsNoTracking().ToList();
على سبيل المثال:
غير فعال:
context.Customers.ToList().Where(c => c.IsActive);
فعالة:
context.Customers.Where(c => c.IsActive).ToList();
42) ما هي الطرق المختلفة لتهيئة البيانات الأولية في EF Core؟
تضمن عملية تهيئة البيانات أن قاعدة البيانات تحتوي على البيانات الافتراضية أو المرجعية عند إنشائها.
الأسلوب الأول: استخدام أداة بناء النماذج
modelBuilder.Entity<Role>().HasData(
new Role { Id = 1, Name = "Admin" },
new Role { Id = 2, Name = "User" }
);
يقوم هذا بإدراج البيانات تلقائيًا أثناء Update-Database.
الأسلوب الثاني: طريقة البذور المخصصة
تنفيذ التعليمات البرمجية يدويًا عند بدء التشغيل:
context.Database.Migrate();
if (!context.Users.Any())
{
context.Users.Add(new User { Name = "Admin" });
context.SaveChanges();
}
الأسلوب الثالث: نصوص SQL
استخدم لغة SQL الخام في عمليات الترحيل:
migrationBuilder.Sql("INSERT INTO Roles (Name) VALUES ('Admin')");
التوصية:
استعمل HasData() لبيانات مرجعية ثابتة وللتهيئة البرمجية لبيانات بدء التشغيل الديناميكية.
43) كيف يدير EF Core موفري قواعد البيانات داخليًا؟
EF Core هو مستقل عن مقدمي الخدماتوهذا يعني أنه يمكنه استهداف محركات قواعد بيانات متعددة عبر قنوات منفصلة حزم موفر قواعد البيانات.
مقدمو الخدمات المشتركون:
| مزود | NuGet فئة الإشتراك | قاعدة البيانات |
|---|---|---|
| ملقم SQL | Microsoft.EntityFrameworkCore.SqlServer |
MSSQL |
| SQLite | Microsoft.EntityFrameworkCore.Sqlite |
موبايل / سطح المكتب |
| PostgreSQL | Npgsql.EntityFrameworkCore.PostgreSQL |
PostgreSQL |
| MySQL | Pomelo.EntityFrameworkCore.MySql |
MySQL |
| كوزموس دي بي | Microsoft.EntityFrameworkCore.Cosmos |
NoSQL |
يستخدم EF Core داخليًا (ABS)tracطبقات tion ل:
- ترجمة الاستعلام
- توليد أوامر SQL
- خريطة أنواع البياناتping
يقوم كل مزود بتنفيذ فئاته الخاصة التي ترث من الفئة الأساسية لـ EF Core.tractions (مثلاً، RelationalDatabaseProvider, QuerySqlGenerator).
44) ما هو "الاستعلام المنقسم"، ومتى يجب استخدامه؟
تمنع الاستعلامات المجزأة EF من التنفيذ وصلات كبيرة ومعقدة عن طريق تنفيذ استعلامات SQL متعددة بدلاً من استعلام واحد.
على سبيل المثال:
var customers = context.Customers
.Include(c => c.Orders)
.AsSplitQuery()
.ToList();
هذا يُنفذ:
- الاستعلام 1 ← الحصول على العملاء
- الاستعلام 2 ← الحصول على الطلبات المتعلقة بهؤلاء العملاء
الفوائد:
- يمنع نواتج العمليات الكارتيزية الكبيرة.
- يحسّن الأداء مع مجموعات البيانات الكبيرة ذات الصلة.
عائق:
رحلات ذهاب وإياب متعددة إلى قاعدة البيانات.
استعمل تقسيم الاستعلامات عند تحميل البيانات الكبيرة ذات الصلة بشكل فوري، قد يتسبب ذلك في مشاكل في الذاكرة.
45) كيف يمكنك مراقبة أوامر SQL التي تم إنشاؤها بواسطة EF بشكل فعال؟
تساعد مراقبة لغة SQL في تصحيح أخطاء الاستعلامات البطيئة وتحسين سلوك ORM.
طرق تسجيل استعلامات SQL:
- تسجيل وحدة التحكم
- تكامل ILoggerFactory
- المعترضون تطبيق
DbCommandInterceptorلالتقاط الأوامر والتوقيتات. - أدوات التشكيل الجانبي استخدم أدوات مثل:
- ميني بروفيلير
- ملف تعريف خادم SQL
- أدوات EFCorePowerTools
optionsBuilder
.UseSqlServer(conn)
.LogTo(Console.WriteLine, LogLevel.Information);
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); optionsBuilder.UseLoggerFactory(loggerFactory);
ينبغي أن يكون تسجيل البيانات تم التمكين بشكل انتقائي في الإنتاج لتجنب زيادة تكاليف الأداء.
46) ما الفرق بين التغييرTracker.DetectChanges() و AutoDetectChangesEnabled؟
| الميزات | DetectChanges() |
AutoDetectChangesEnabled |
|---|---|---|
| النوع | الأسلوب | الممتلكات |
| الهدف | يجبر EF على المسح tracالكيانات المحددة واكتشاف التغييرات | تفعيل/تعطيل خاصية الكشف التلقائي عن التغييرات |
| الترتيب | يدوي | صواب |
| الأستعمال | المطالبة صراحةً بتحسين الأداء | تعطيل التحديثات الجماعية |
على سبيل المثال:
context.ChangeTracker.AutoDetectChangesEnabled = false;
foreach (var item in list)
{
context.Add(item);
}
context.SaveChanges();
يؤدي تعطيل الكشف التلقائي في الحلقات إلى تحسين الأداء بنسبة تصل إلى 40% في عمليات الإنتاج بالجملة.
47) كيف تستخدم الجداول الزمنية مع EF Core؟
تتيح لك الجداول الزمنية (التي تم تقديمها في SQL Server 2016) tracالبيانات التاريخية تلقائيا.
الخطوات التالية:
- تفعيل الدعم الزمني في عملية الترحيل:
- استعلام عن البيانات التاريخية:
builder.Entity<Employee>()
.ToTable("Employees", b => b.IsTemporal());
var history = context.Employees
.TemporalAsOf(DateTime.UtcNow.AddDays(-7))
.ToList();
المزايا:
- سجل البيانات المدمج tracملك
- التدقيق والامتثال
- لا حاجة إلى مشغلات يدوية
يدعم EF Core 6+ الاستعلام الزمني الكامل.
48) كيف يدعم EF Core الاستعلامات المجمعة والنماذج المولدة مسبقًا معًا؟
تُعد الاستعلامات المُجمَّعة والنماذج المُجمَّعة نوعين ميزات الأداء التي تكمل بعضها البعض.
| الميزات | الهدف |
|---|---|
| استعلامات مجمعة | نتائج ترجمة استعلام التخزين المؤقت |
| النماذج المُجمّعة | تجميع بيانات تعريف النموذج مسبقًا |
مثال على استعلام مُجمّع:
static readonly Func<AppDbContext, int, Customer> _getCustomerById =
EF.CompileQuery((AppDbContext ctx, int id) =>
ctx.Customers.FirstOrDefault(c => c.Id == id));
الاستخدام:
var customer = _getCustomerById(context, 5);
سويا: النماذج المجمعة تقلل التكلفة البدائيةبينما تقلل الاستعلامات المُجمّعة تكلفة الاستعلامات أثناء التشغيل - مثالي ل استفسارات عالية التردد.
49) ما هي المخاطر الشائعة عند استخدام EF في بنية الخدمات المصغرة؟
الأخطاء الشائعة:
- سياق قاعدة البيانات المشترك عبر الخدمات
→ ينتهك مبدأ عزل الخدمات المصغرة.
→ يجب أن يكون لكل خدمة مصغرة سياق قاعدة بيانات ومخطط خاص بها. - التواصل الودي (استفسارات متعددة)
→ تقليل استعلامات EF لكل استدعاء API. - التحميل المفرط المتلهف
→ قم بتحميل ما هو مطلوب فقط عبر DTOs. - الهجرات المركزية
→ ينبغي لكل خدمة إدارة عمليات الترحيل الخاصة بها بشكل مستقل. - غياب الحدود بين المعاملات
→ استخدم المعاملات الموزعة (نمط صندوق الصادر) إذا كانت هناك حاجة إلى اتساق بين الخدمات. - الترابط الوثيق مع موفر SQL
→ استخدم المستودع abstracللحفاظ على المرونة في اختيار قاعدة البيانات.
50) كيف يتم دمج حقن التبعية مع DbContext في ASP.NET Core؟
يتكامل إطار عمل الكيانات بسلاسة مع نظام حقن التبعية المدمج في ASP.NET Core نظام.
الإعداد:
services.AddDbContext<AppDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("Default")));
ثم قم بإدخالها في وحدات التحكم أو الخدمات:
public class CustomerService
{
private readonly AppDbContext _context;
public CustomerService(AppDbContext context)
{
_context = context;
}
}
مدة الحياة:
| حياة | الوصف | تنصح ل |
|---|---|---|
| راقب | سياق واحد لكل طلب HTTP | الترتيب |
| عابر | نسخة جديدة في كل مرة | وظائف الخلفية |
| الوليد المفرد | يتم مشاركته عالميًا | تجنب (غير آمن للاستخدام مع الخيوط) |
يضمن استخدام حقن التبعية قابلية الاختبار، إدارة دورة الحياةو كفاءة الموارد عبر عمليات الويب والعمليات الخلفية.
🔍 أهم أسئلة المقابلات المتعلقة بإطار عمل الكيانات مع سيناريوهات واقعية واستجابات استراتيجية
1) ما هو إطار عمل الكيانات، ولماذا يتم استخدامه في تطبيقات المؤسسات؟
المتوقع من المرشح: يرغب القائم بالمقابلة في تقييم فهمك الأساسي لإطار عمل الكيانات وقيمته في التطبيقات العملية.
مثال للإجابة: إطار عمل الكيانات هو خريطة كائنية علائقيةping إطار عمل لـ .NET يسمح للمطورين بالعمل مع قواعد البيانات باستخدام كائنات .NET بدلاً من لغة SQL الخام. يُستخدم في تطبيقات المؤسسات لتحسين الإنتاجية، وتقليل شيفرة الوصول إلى البيانات المتكررة، والحفاظ على فصل قوي بين المهام.
2) هل يمكنك توضيح الفرق بين Code ما هي مناهج "الأول"، و"قاعدة البيانات أولاً"، و"النموذج أولاً"؟
المتوقع من المرشح: يرغب القائم بالمقابلة في تقييم معرفتك بأساليب العمل المختلفة في مجال التطوير ومتى تستخدم كل منها.
مثال للإجابة: Code تبدأ طريقة "الأولى" بفئات المجال وتُنشئ قاعدة البيانات من الكود. أما طريقة "قاعدة البيانات أولاً" فتبدأ بقاعدة بيانات موجودة وتُنشئ فئات الكيانات. بينما تستخدم طريقة "الأولى للنموذج" مصممًا مرئيًا لتحديد النموذج، ثم تُنشئ الكود وقاعدة البيانات معًا. ويتم اختيار كل طريقة بناءً على متطلبات المشروع والبنية التحتية الحالية.
3) كيف يتعامل إطار عمل الكيانات مع العلاقات بين الجداول؟
المتوقع من المرشح: يقوم القائم بالمقابلة بفحص فهمك لنمذجة البيانات والخرائط العلائقيةping.
مثال للإجابة: يتعامل إطار عمل الكيانات مع العلاقات باستخدام خصائص التنقل والمفاتيح الخارجية. وهو يدعم العلاقات من نوع واحد إلى واحد، وواحد إلى متعدد، ومتعدد إلى متعدد، مما يسمح للمطورين باستعراض البيانات ذات الصلة باستخدام مراجع الكائنات بدلاً من عمليات الربط.
4) صف موقفًا قمت فيه بتحسين أداء قاعدة البيانات باستخدام Entity Framework.
المتوقع من المرشح: يريد القائم بالمقابلة سماع مثال عملي يوضح مهارات التحسين.
مثال للإجابة: في وظيفتي السابقة، حسّنتُ الأداء من خلال تقليل التحميل المسبق غير الضروري وتطبيق استعلامات الإسقاط باستخدام عبارات SELECT. وقد أدى ذلك إلى تقليل كمية البيانات المسترجعة من قاعدة البيانات وخفض وقت تنفيذ الاستعلام بشكل ملحوظ.
5) كيف تدير عمليات الترحيل في Entity Framework؟
المتوقع من المرشح: يقوم القائم بالمقابلة بتقييم خبرتك في تغييرات المخطط والتحكم في الإصدارات.
مثال للإجابة: تتم إدارة عمليات الترحيل باستخدام أدوات الترحيل المدمجة التي tracتتغير نماذج k بمرور الوقت. في وظيفة سابقة، كنت أقوم بانتظام بإنشاء ومراجعة نصوص الترحيل قبل تطبيقها لضمان سلامة قاعدة البيانات عبر البيئات المختلفة.
6) ما هو التحميل الكسول، ومتى يجب تجنب استخدامه؟
المتوقع من المرشح: يريد القائم بالمقابلة اختبار فهمك لاستراتيجيات تحميل البيانات والمفاضلات المتعلقة بالأداء.
مثال للإجابة: يقوم التحميل الكسول بتحميل البيانات ذات الصلة تلقائيًا عند الوصول إليها. أنصح بتجنب استخدامه في الحالات التي تتطلب أداءً عاليًا أو في واجهات برمجة التطبيقات (APIs) لأنه قد يتسبب في استدعاءات متعددة غير مقصودة لقاعدة البيانات، مما يؤدي إلى مشكلة استعلام N+1.
7) كيف تتعامل مع المعاملات في Entity Framework؟
المتوقع من المرشح: يقوم القائم بالمقابلة بتقييم معرفتك باتساق البيانات ومعالجة الأخطاء.
مثال للإجابة: يدعم إطار عمل الكيانات المعاملات من خلال سياق قاعدة البيانات ونطاق المعاملة. في وظيفتي السابقة، كنت أستخدم المعاملات الصريحة لضمان إتمام عمليات قاعدة البيانات المتعددة ذات الصلة بنجاح معًا، أو التراجع عنها في حالة الفشل.
8) اشرح كيف يتم استخدام حقن التبعية مع Entity Framework.
المتوقع من المرشح: يريد القائم بالمقابلة أن يرى مدى فهمك لبنية التطبيقات الحديثة.
مثال للإجابة: يُستخدم حقن التبعية لحقن سياق قاعدة البيانات (DbContext) في الخدمات أو وحدات التحكم. وهذا يُحسّن قابلية الاختبار والصيانة من خلال السماح بمحاكاة السياق أو استبداله دون تغيير منطق العمل.
9) صف خطأً صعباً واجهته مع Entity Framework وكيف قمت بحله.
المتوقع من المرشح: يبحث القائم بالمقابلة عن القدرة على حل المشكلات ومهارات تصحيح الأخطاء.
مثال للإجابة: في وظيفتي السابقة، واجهت مشكلة مع tracحدثت تعارضات في تحديث الكيانات المنفصلة. قمت بحل المشكلة عن طريق تحديد حالات الكيانات بشكل صريح والتأكد من وجود نسخة واحدة فقط من كل كيان. tracked by the context.
10) كيف تحدد متى لا يكون إطار عمل الكيانات هو الأداة المناسبة؟
المتوقع من المرشح: يريد القائم بالمقابلة أن يفهم حكمك وقدرتك على اختيار التقنيات المناسبة.
مثال للإجابة: أدرس البدائل عندما تتطلب التطبيقات وصولاً فائق الأداء إلى البيانات أو منطق إجراءات مخزنة معقد. في مثل هذه الحالات، يمكن أن يوفر استخدام تقنية ORM المصغرة أو ADO.NET الخام مزيدًا من التحكم والكفاءة.
