【问题标题】:can i put 2 dto in mapentity?我可以将 2 dto 放入 mapentity 吗?
【发布时间】:2022-06-10 20:43:29
【问题描述】:

我可以将我的 2 个 DTO 合二为一吗MapEntity 很抱歉,我是新手,我想了解我的后端是如何工作的。

这是我的 2 个 DTO

public class PropertyTransactionDTO
{
    public int Id { get; set; }
    public string TransactionNumber  { get; set; }
    public DateTime TransactionDate  { get; set; }
    public PropertyTransactionDetailsDTO PropertyTransactionDetails { get; set; }
}

public class PropertyTransactionDetailsDTO
{  
    public int Id { get; set; }
    public int PropertyTranId { get; set; }
    public bool isDepreciation { get; set; }
    public string Dr { get; set; }
}

这是我的 2 个实体

public class PROPERTYTRANSACTIONDETAILS
{
    public int ID { get; set; }
    public int PROPERTYTRAN_ID { get; set; }
    public bool IS_DEPRECIATION { get; set; }
    public string DR { get; set; }
    public List<PROPERTYTRANSACTION> PROPERTY_TRANSACTION { get; set; } 
}


public class PROPERTYTRANSACTION
{
    public int ID { get; set; }
    public string TRANSACTION_NUMBER { get; set; }
    public DateTime TRANSACTION_DATE { get; set; }
    public PROPERTYTRANSACTIONDETAILS PROPERTYTRANSACTIONDETAILS { get; set; }
}

这就是我所做的,我试图把它放在一个中,对吗?与否

private PROPERTYTRANSACTION MapToEntity(PropertyTransactionDTO item)
{
    if (item == null) return new PROPERTYTRANSACTION();
    return new PROPERTYTRANSACTION
    {
        ID = item.Id,
        TRANSACTION_NUMBER = item.TransactionNumber,
        TRANSACTION_DATE = item.TransactionDate,
        
        PROPERTYTRANSACTIONDETAILS = new PROPERTYTRANSACTIONDETAILS()
        {
            ID = item.PropertyTransactionDetails.Id,
            PROPERTYTRAN_ID = item.PropertyTransactionDetails.PropertyTranId,
            IS_DEPRECIATION = item.PropertyTransactionDetails.isDepreciation,
            DR = item.PropertyTransactionDetails.Dr
            
        }
    };
}

如有错误请指正,谢谢

【问题讨论】:

  • 您在运行代码时是否遇到任何错误?我看到您的代码没有问题,但我更喜欢使用 AutoMapper 库进行映射
  • Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details. ---&gt; Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'PROPERTYTRANSACTIONDETAILSID'. at Microsoft.Data.SqlClient.SqlCommand.&lt;&gt;c.&lt;ExecuteDbDataReaderAsync&gt;b__169_0(Task1 结果)在 System.Threading.Tasks.ContinuationResultTaskFromResultTask2.InnerInvoke() at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
  • 这是我的错误
  • 为什么会有这个公开列表 PROPERTY_TRANSACTION { get;放; } 在 PROPERTYTRANSACTIONDETAILS 中?

标签: c# asp.net asp.net-core entity-framework-core


【解决方案1】:

您需要指定PROPERTYTRANSACTIONPROPERTYTRANSACTIONDETAILS 之间的关系。似乎这种关系是一对多的关系,一个PROPERTYTRANSACTIONDETAILS可以有很多PROPERTYTRANSACTION,每个PROPERTYTRANSACTION有一个PROPERTYTRANSACTIONDETAILS,所以你应该在你的实体中添加一个外键PROPERTYTRANSACTIONDETAILSID /p>

public class PROPERTYTRANSACTION
{
    public int ID { get; set; }
    public string TRANSACTION_NUMBER { get; set; }
    public DateTime TRANSACTION_DATE { get; set; }
    [ForeignKey("PROPERTYTRANSACTIONDETAILS")]
    public int PROPERTYTRANSACTIONDETAILSID { get; set; }
    public PROPERTYTRANSACTIONDETAILS PROPERTYTRANSACTIONDETAILS { get; set; }
}

【讨论】:

    猜你喜欢
    • 2011-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多