Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 未首先在实体框架代码中创建字段_C#_Entity Framework_Entity Framework 5 - Fatal编程技术网

C# 未首先在实体框架代码中创建字段

C# 未首先在实体框架代码中创建字段,c#,entity-framework,entity-framework-5,C#,Entity Framework,Entity Framework 5,我有一个从基类继承的POCO类。我正在使用EF Power工具显示实体数据模型。我注意到五个属性中只有两个是从基类显示的。以下是一个例子: 基类: using System; namespace App.Model { [Serializable()] public abstract class BaseEntity { public bool IsActive { get; private set; } public DateTimeO

我有一个从基类继承的POCO类。我正在使用EF Power工具显示实体数据模型。我注意到五个属性中只有两个是从基类显示的。以下是一个例子:

基类:

using System;

namespace App.Model
{
    [Serializable()]
    public abstract class BaseEntity
    {
        public bool IsActive { get; private set; }
        public DateTimeOffset Created { get; private set; }
        public string CreatedBy { get; private set; }
        public DateTimeOffset LastUpdated { get; protected set; }
        public string LastUpdatedBy { get; protected set; }

        private BaseEntity() { }

        protected BaseEntity(DateTimeOffset created, string createdBy)
        {
            IsActive = true;
            Created = created;
            CreatedBy = createdBy;
            LastUpdated = created;
            LastUpdatedBy = createdBy;
        }
    }
}
using System;

namespace App.Model
{
    [Serializable()]
    public class Person : BaseEntity
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }

        public Person(DateTimeOffset created, string createdBy) : 
            base(created, createdBy) {  }
    }
}
继承类:

using System;

namespace App.Model
{
    [Serializable()]
    public abstract class BaseEntity
    {
        public bool IsActive { get; private set; }
        public DateTimeOffset Created { get; private set; }
        public string CreatedBy { get; private set; }
        public DateTimeOffset LastUpdated { get; protected set; }
        public string LastUpdatedBy { get; protected set; }

        private BaseEntity() { }

        protected BaseEntity(DateTimeOffset created, string createdBy)
        {
            IsActive = true;
            Created = created;
            CreatedBy = createdBy;
            LastUpdated = created;
            LastUpdatedBy = createdBy;
        }
    }
}
using System;

namespace App.Model
{
    [Serializable()]
    public class Person : BaseEntity
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }

        public Person(DateTimeOffset created, string createdBy) : 
            base(created, createdBy) {  }
    }
}
只有LastUpdated和LastUpdatedBy显示在模型中:

我认为这可能与受保护的和私有的setter有关,所以我尝试将其他三个未显示的属性设置为受保护的,然后重新运行该工具。它仍然没有创建IsActive、Created和CreatedBy字段


是什么导致了这个问题?如何使所有五个字段都显示在模型中

显而易见的。。。您是否在更改属性后重新生成?并将其更改为用于测试的
public
,没有改变任何内容?你能告诉我重建是什么意思吗?我不确定您是真的重建了项目还是进行了
代码迁移
,我认为这是首先使用代码更新模型所必需的。我指的是在解决方案中重建项目。根据您的评论,我尝试了DropCreateDatabaseIfModelChanges选项,该选项与设置为protected而非private的setters一起工作。您知道如何强制使用私有setter,基本上是寻找一种拥有只读值的方法吗。我将为此创建一个新问题。