列名无效 - automapper

时间:2017-05-19 06:36:25

标签: entity-framework automapper database-migration ef-migrations

我有一个包含多个属性的表。我有一个Id(PK)和一个requestId(int,FK)。我们正在改进表格的数据库结构。由于RequestId(int,FK)是唯一的,我们想要删除Id(PK)并将其替换为RequestId(int,FK)。

我已经添加了一个迁移来实现这一目标。

DropForeignKey("dbo.Table1", "FK_Table1_Request");

DropIndex("dbo.Table1", new[] { "RequestId" });

DropPrimaryKey("dbo.Table1", "PK_Table1");

DropColumn("dbo.Table1", "Id");

RenameColumn(table: "dbo.Table1", name: "RequestId", newName: "Id");

AlterColumn("dbo.Table1", "Id", c => c.Int(nullable: false));

AddPrimaryKey("dbo.Table1", "Id");

CreateIndex("dbo.Table1", "Id");

AddForeignKey("dbo.Table1", "Id", "dbo.Table2", "Id");

所以我删除了外键,主键和索引,并为RequestId添加了新的。

当我运行update-database命令时,它不会给出任何错误,并且数据库已经更新。将删除列并正确重命名。

现在我想通过API调用从数据库中检索一些数据。我使用Automapper映射我的DAL项目和API项目中的属性。当我尝试通过Postman获取数据时,我收到此错误:

  

" exceptionMessage":"错误映射类型。\ r \ n \ r \ nMapping   类型:\ r \ nPropertyRequest - >   PropertyRequestReadModel \ r \ nINIv2.Core.PropertyRequest - >   INIv2.WebApi.Models.Property.Request.PropertyRequestReadModel \ r \ n \ r \ n类型   地图配置:\ r \ nPropertyRequest - >   PropertyRequestReadModel \ r \ nINIv2.Core.PropertyRequest - >   INIv2.WebApi.Models.Property.Request.PropertyRequestReadModel \ r \ n \ r \ n属性:\ r \ nExtensionOfCoverage",

     

" exceptionMessage":"无效的列名称' Request_Id'。",

奇怪的是,我的模型上从未有过属性Request_Id,迁移后它也不是数据库中的列。

当财产不存在时,是否有人知道为什么会出现此错误?

编辑1

Readmodel:

public Table1ReadModel()
  {
    Perils = new HashSet<Table3ReadModel>();
  }

    public int Id { get; set; }

    public string Remarks { get; set; }
    public bool IsUsed { get; set; }

    public ICollection<Table3ReadModel> Perils { get; set; }



public class Table2: Table
    {
        public Table MaterialDamage { get; set; }
        public Table BusinessInterruption { get; set; }
        public Table ExtensionOfCoverage { get; set; }
    }

DAL模型

public Table1(Table2 table2)
        {
            if (table2== null) throw new ArgumentNullException(nameof(tabe2));

            Table2 = table2;
            Perils = new HashSet<Table3>();
        }

        public int Id { get; set; }
        //public int? ParentId { get; set; }
        //public int RequestId { get; set; }
        public string Remarks { get; set; }
        public bool IsUsed { get; set; }

        #region IAuditable properties
        public DateTime CreDat { get; set; }
        public string CreUsr { get; set; }
        public DateTime UpdDat { get; set; }
        public string UpdUsr { get; set; }
        #endregion

        #region Navigation properties
        public virtual Table3 Table3{ get; set; }
        public virtual ICollection<Table2> Perils { get; set; }


public Table2(RequestGroup requestGroup, RequestStatus requestStatus, string countryId) : base()
 {
       this.Table = new Table(this);
       this.Table = new Table(this);
       this.Table= new Table(this);
  }
        public virtual Table Table { get; set; }

        public virtual Table Table { get; set; }

        public virtual Table Table { get; set; }
}

谢谢,布伦特

0 个答案:

没有答案