域 class 对数据层不可见(应用程序上下文 class )

Domain classes not visible to Data layer (Application context class )

为了让数据层知道我的域 classes,我在两个 class 库之间添加了一个引用,HMSContext(即数据层)和 Hms.Entities(即域-classes)。

以下是来自 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; }
    }
}

来自 HMSContext.cs 的代码:

using System.Data.Entity;

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

    }
}

我在这两个 .dll 之间添加了引用。附上显示此内容的快照 here。出于某种原因,HRMContext.cs 没有读取 HMS.Entities 尽管添加了引用。我错过了什么吗?有人可以阐明这一点吗?提前致谢。

您使用的 using System.Data.Entity; 与您的项目结构无关。所以也加上HMS.Entities

任何时候遇到此类问题,请尝试使用完整命名空间并检查它是否正确。

请注意,您还具有 重构 能力。您可以使用 ( Ctrl + . ) 和 Visual Studio 帮助您使用正确的命名空间。

你的代码必须是这样的:

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

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

对于实体 class 你应该使用 public 关键字:

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; }
    }
}