سؤال

لقد بدأت للتو في اللعب مع LinQ إلى الكيانات وركضت في مشكلة لا أستطيع معرفة ذلك.

سأتعامل مع هذا الخطأ:

عضو في الشرط 'resources.typeid' مع شرط آخر غير "ISNULL = خطأ". إما إزالة الشرط الموجود في المرتبطة أو إزالته من التعيين.

الشرط الموجود هو حقل تعريف في الكيان المجرد المراققه يحدد نوع العلامة التجارية (دفتر أو رابط أو دليل، إلخ). يعد TextID أيضا مفتاحا أجنبيا ومصمم في الارتباط باستخدام كيان نوع المورد. أعتقد أن هذه هي المشكلة لكنني لا أعرف كيف أو لماذا يجب أن أغير هذا.

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

المحلول

عادة ما يحدث ذلك عندما تكون لديك حالة كشرط واستخدامها أيضا بمثابة خاصية. قد يسبب ذلك مشاكل لأنك تستخدمه لتعيين الارتباط باستخدام ResourceType واستخدامه كشرط للميراث.

نصائح أخرى

يكون RelatedResources.TypeID اضبط أنه ليس فارغا (أي "ISNULL = خطأ") في قاعدة البيانات وفي مخطط عمل EntityFrame؟

لست متأكدا من أنه يمكنك أن يكون لديك هذا المجال كشرط ويعمل ككل مفتاح أجنبي على طاولة أخرى.

وهل تحتاج إلى إذا كنت تستخدم الميراث الشرطية لتحديد النوع؟

يبدو وكأنه خطأ الميراث الجدول لكل هرمي (TPH):

https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started-with-ef-using-mvc-mvc/implementing-theritance-the-the-tthe-entity-framework-in- تطبيق ASP-NET-MVC

يستخدم [NotMapped] على ملكية الطبقة الأساسية.

كود مزيف:

public abstract class MyBaseClass
{ 
    [NotMapped]
    public MyEnum MyEnum { get; protected set; }
}


public class DerivedOne: MyBaseClass
{
    public DerivedOne()
    {
        MyEnum = MyEnum.Value1;
    }

    public string MyDerivedOneString { get; set; }
}

public class DerivedTwo: MyBaseClass
{
    public DerivedTwo()
    {
        MyEnum = MyEnum.Value2;
    }
}

public class MyDbContext : DbContext
{
    DbSet<MyBaseClass> MyBaseClass { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.Entity<MyBaseClass>()
            .Map<DerivedOne>(x => x.Requires("MyEnum").HasValue((int)MyEnum.Value1))
            .Map<DerivedTwo>(x => x.Requires("MyEnum").HasValue((int)MyEnum.Value2));
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top