Home > Software design >  Domain classes not visible to Data layer (Application context class )
Domain classes not visible to Data layer (Application context class )

Time:05-04

To make data-layer be aware of my domain classes, I've added a reference between the two class libraries, HMSContext (i.e., data-layer) and Hms.Entities (i.e., domain-classes).

Following is code from HMS.Entities:

namespace HMS.Entities
{
    class Accomodation
    {
        public int ID { get; set; }
        public int AccomodationPackageID { get; set; }
        public AccomodationPackage AccomodationPackage { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}

Code from HMSContext.cs:

using System.Data.Entity;

namespace HMS.Data
{
    public class HMSContext : DbContext
    {
        public DbSet<Accomodation> Accomodations { get; set; }

    }
}

I've added a reference between these two .dlls. A snapshot showing this is attached here. For some reason, HRMContext.cs is not reading HMS.Entities despite added reference. Am I missing anything? Can someone please shed light on this. Thanks in advance.

CodePudding user response:

You are using using System.Data.Entity; where it is not related to your project structure. So change it to the HMS.Entities

Any time you have such a problem, try using the full namespace and check if it is correct or not.

Note that you also have refactoring capabilities too. You can use ( Ctrl . ) and Visual Studio helps you to use the correct namespace.

Your code has to be like this:

using System.Data.Entity;
using HMS.Entities;

namespace HMS.Data
{
    public class HMSContext : DbContext
    {
        public DbSet<Accomodation> Accomodations { get; set; }

    }
}

And for the Entity class you should use public keyword:

namespace HMS.Entities
{
    public class Accomodation
    {
        public int ID { get; set; }
        public int AccomodationPackageID { get; set; }
        public AccomodationPackage AccomodationPackage { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
    }
}
  • Related