我有一个包含多个属性的表。我有一个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; }
}
谢谢,布伦特