استبعاد مجال / خاصية من قاعدة البيانات مع إطار الكيان 4 & Code-First

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

سؤال

أود أن أعرف أن هناك طريقة لاستبعاد بعض الحقول من قاعدة البيانات؟ على سبيل المثال:

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string FatherName { get; set; }

    public bool IsMale { get; set; }
    public bool IsMarried { get; set; }

    public string AddressAs { get; set; }
}

كيف يمكنني استبعاد حقل العناوين من قاعدة البيانات؟

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

المحلول

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

builder.Entity<Employee>().MapSingleType(e => new {
  e.Id,
  e.Name,
  e.FatherName,
  e.IsMale,
  e.IsMarried
});

لأن العناوين غير مرجعي، ليس جزءا من الكيان / قاعدة البيانات.

فريق EF هو مع مراعاة إضافة شيء مثل هذا:

builder.Entity<Employee>().Exclude(e => e.AddressAs);

أقترح عليك أن تقول ترك تعليق على مدونة EFDesign، مطالبة بهذه الميزة :)

أتمنى أن يساعدك هذا

اليكيال

نصائح أخرى

للإشارة المستقبلية: يمكنك استخدام التعليقات التوضيحية للبياناتMSDN EF - رمز التوضيح أولا

[NotMapped]        
public string AddressAs { get; set; }

أعلم أن هذا سؤال قديم ولكن في حالة وجود أي شخص (مثلي) يأتي إليه من البحث ...

من الممكن الآن في إطار الكيان 4.3 للقيام بذلك. أنت تفعل ذلك مثل ذلك:

builder.Entity<Employee>().Ignore(e => e.AddressAs);

من الممكن أيضا إضافة العمود الذي تريد تجاهله ك خاصية الظل. في DBContext:

builder.Entity<Employee>().Property<string>("AddressAs");

ثم يمكنك الاستعلام عن هذا العمود مثل ذلك:

context.Employees.Where(e => EF.Property<string>(e, "AddressAs") == someValue);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top