سؤال

باستخدام رمز EF 4.0 فقط أريد عمل تجمع بين فئة مجردة وطبيعية.

لديّ فئة "عنصر" و "محتوى" و "اختبار".

"ContentBase" مجردة و "اختبار" مشتق منه.

يحتوي "ContentBase" على خاصية "عنصر" يرتبط بمثال "العنصر".

بحيث أن "test.item" أو أي فئة مستمدة من "ContentBase" لديها خاصية التنقل "عنصر".

في ديسيبل ، كل سجل للاختبار لديه سجل مطابق للعنصر.


public class Item
{
    public int Id { get; set;}
}

public abstract class ContentBase
{
    public int ContentId { get; set;}
    public int Id { get; set;}

    public Item Item { get; set;}
}

public class Test : ContentBase
{
    public string Name { get; set;}
}

الآن بعض رمز init

public void SomeInitFunction()
{

    var itemConfig = new EntityConfiguration<Item>();
    itemConfig.HasKey(p => p.Id);
    itemConfig.Property(p => p.Id).IsIdentity();
    this.ContextBuilder.Configurations.Add(itemConfig);

    var testConfig = new EntityConfiguration<Test>();
    testConfig.HasKey(p => p.ContentId);
    testConfig.Property(p => p.ContentId).IsIdentity();

    // the problem 
    testConfig.Relationship(p => p.Item).HasConstraint((p, q) => p.Id == q.Id);

    this.ContextBuilder.Configurations.Add(testConfig);  
}

هذا يعطي خطأ: يتم تسجيل مفتاح للنوع المشتق "اختبار". يجب تسجيل المفاتيح لنوع الجذر "ContentBase".

على أي حال أحاول أن أحصل على خطأ. ماذا أفعل خطأ؟

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

المحلول

الخلاصة حتى الآن: غير ممكن.

نصائح أخرى

حاول في كيان SimperType لإعادة رد علاقتك:

في ContentBase: عنصر العنصر الافتراضي العام {get ؛ تعيين؛}

في الاختبار: عنصر العنصر العام الجديد {get ؛ تعيين؛}

تم تجميع هذا في مشروع الاختبار الخاص بي ، لكنني لم أختبره أكثر. فقط في الوقت الحالي ، wheb EF5 أو Final Comeo

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

public class Test : ContentBase
{
    public string Name { get; set;}
    public string TestItem { get {return Item;} ...

}

testConfig.Relationship(p => p.TestItem )
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top