رمز EF 4.0 فقط تجميع من الملخص إلى المستمد
-
20-09-2019 - |
سؤال
باستخدام رمز 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 )