Why is my DbContext DbSet null?

29,273

Solution 1

That's because you define a field of DbSet<Person> on Repository class instead of a property. Once you add a property or change it to be a automatic property,People will start to give you values instead of null. So all you need to do is to change your Repository class to:

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

Solution 2

I just had the same issue. The problem was that I did set these properties as 'internal' while they must have been 'public'. Just in case someone is still searching :)

Solution 3

I just had the same issue. The problem was that I did set these properties as 'internal' while they must have been 'public'. Just in case someone is still searching :)

I guess, these properties can be internal/public too, if you use them like this:

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

    public Repository()
    {
        //your code here...
        People = Set<Person>();
    }
}
Share:
29,273
Jamey McElveen
Author by

Jamey McElveen

I am a Christian, I have three boys, Jake, Slater, Seth and a beautiful wife Connie. Application developer using primarily .NET/C#. I am using Objective-C for iPhone development. In the past I have also developed in Java, and Delphi.

Updated on July 09, 2022

Comments

  • Jamey McElveen
    Jamey McElveen almost 2 years

    I created a new Entity Frameworks Code First app and the DbSet (People) is returning null.

    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    
    public class Repository : DbContext
    {
        public DbSet<Person> People;
    }
    

    web.config: connection string

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

    Now when I call

    Repository _repo = new Repository()
    _repo.People;
    

    _repo.People will be null

    What I am missing?

    • Microsoft.Data.Entity.Ctp.dll is referenced
    • I have tried with and without a database initializer.