我有一个 ClientDocument 数据模型和映射如下:
public class ClientDocument : BaseEntity
{
public int DocumentOwnerId { get; set; }
public int ClientProfileId { get; set; }
public virtual ClientProfile ClientProfile { get; set; }
public int DocumentId { get; set; }
public virtual Document Document { get; set; }
}
public ClientDocumentMap(EntityTypeBuilder<ClientDocument> entityBuilder)
{
entityBuilder.HasKey(t => t.Id);
// One to Many with client profile
entityBuilder.HasOne(c => c.ClientProfile).WithMany(p => p.ClientDocuments).HasForeignKey(x => x.ClientProfileId).IsRequired();
// One to Many with document
entityBuilder.HasOne(c => c.Document).WithMany(p => p.ClientDocuments).HasForeignKey(x => x.DocumentId).IsRequired();
}
和一个 ClientDocumentViewModel 如下:
public class ClientDocumentViewModel
{
public int Id { get; set; }
public int CreatedBy { get; set; }
public DateTime AddedDate { get; set; }
[HiddenInput]
public int ClientProfileId { get; set; }
public string ClientProfileName { get; set; }
public int SecondaryClientProfileId { get; set; }
[HiddenInput]
public string SecondaryClientProfileName { get; set; }
public int DocumentOwnerId { get; set; }
public int DocumentId { get; set; }
public DocumentViewModel Document { get; set; }
}
当我将 ClientDocumentViewModel 传递给映射器并将视图模型映射到数据模型时,使用:
var entity = _mapper.Map<ClientDocumentViewModel, ClientDocument>(model);
ViewModel 的属性都正确映射到数据模型,但是映射器也在初始化 ClientProfile 的实例,该实例正在使用实体框架停止插入。
我有其他使用相同映射模式的数据模型和视图模型。当我调试它们时,ClientProfile 属性没有被初始化并且数据实体被成功插入。我浏览并比较了数据模型、实体框架映射、数据库上的外键和映射配置文件,它们看起来都一样。
有谁知道为什么会发生这种情况?