سؤال

لقد قمت بإنشاء رمز First Frameworks الجديد ، ويعود DBSET (الأشخاص) NULL.

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class Repository : DbContext
{
    public DbSet<Person> People;
}

web.config: سلسلة الاتصال

<connectionStrings>
  <add name="Repository"
       connectionString="Data Source=|DataDirectory|Repository.sdf"
       providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>

الآن عندما أتصل

Repository _repo = new Repository()
_repo.People;

_repo.People سيكون فارغا

ماذا أفتقد؟

  • يتم الرجوع إلى Microsoft.data.entity.ctp.dll
  • لقد حاولت مع وبدون مصادفة قاعدة بيانات.
هل كانت مفيدة؟

المحلول

هذا لأنك تحدد ملف مجال من DbSet<Person> على فئة المستودع بدلاً من أ منشأه. بمجرد إضافة خاصية أو تغييرها لتكون خاصية تلقائية ،People سيبدأ في إعطائك القيم بدلاً من الفارغ. لذلك كل ما عليك فعله هو تغيير فئة المستودع الخاص بك إلى:

public class Repository : DbContext
{
    public DbSet<Person> People { get; set; }
}

نصائح أخرى

لقد مررت بنفس المشكلمة للتو. كانت المشكلة هي أنني قمت بتعيين هذه الخصائص على أنها "داخلية" بينما يجب أن تكون "عامة". فقط في حال كان شخص ما لا يزال يبحث :)

لقد مررت بنفس المشكلمة للتو. كانت المشكلة هي أنني قمت بتعيين هذه الخصائص على أنها "داخلية" بينما يجب أن تكون "عامة". فقط في حال كان شخص ما لا يزال يبحث :)

أعتقد أن هذه الخصائص يمكن أن تكون داخلية/عامة أيضًا ، إذا كنت تستخدمها مثل هذا:

public class Repository : DbContext
{
    internal DbSet<Person> People { get; set; }

    public Repository()
    {
        //your code here...
        People = Set<Person>();
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top