EF7 -实体类的属性对象没有被填充



晚安!

我正在玩EF7来了解它。

我已经创建了下面的类:

public class Lawsuit
{
/// <summary>
/// Lawsuit identificator.
/// </summary>
public Guid LawsuitId { get; set; }
/// <summary>
/// Date time asigned where lawsuit was created.
/// </summary>
public DateTime DateTimeCreated { get; set; }
/// <summary>
/// First part envolved signature object.
/// </summary>
public virtual Signature? FirstPartyEnvolved { get; set; }
/// <summary>
/// First part envolved signature object.
/// </summary>
public virtual Signature? SecondPartyEnvolved { get; set; }
/// <summary>
/// Winner position indicator
/// </summary>
public WinnerPosition? WinnerPosition { get; set; }
}
public class Signature
{
/// <summary>
/// Id from signature.
/// </summary>
public Guid Id { get; set; }
/// <summary>
/// String which saves text received from contract signatures.
/// </summary>
public string? Signatures { get; set; }
}

在插入时,数据在数据库(SQL Server)中正确创建,但是当我试图获取数据时,firstpartyinvolved和secondpartyinvolved属性为空。

响应示例:

[
{
"lawsuitId": "6ece06da-d5f9-40e7-a7a3-2816618e7869",
"dateTimeCreated": "2022-12-12T22:05:24.4717517",
"firstPartyEnvolved": null,
"secondPartyEnvolved": null,
"winnerPosition": 1
}
]

我正在检查DTO对象是否没有很好地解析数据,但问题似乎是在实体对象

public Task Handle()
{
var Lawsuites_repo = LawsuitRepository.GetAllLawsuit();
var Lawsuites = Lawsuites_repo.Select(x =>
new LawsuitDTO
{
LawsuitId = x.LawsuitId,
DateTimeCreated = x.DateTimeCreated,
WinnerPosition = x.WinnerPosition ?? 0,
FirstPartyEnvolved = x.FirstPartyEnvolved,
SecondPartyEnvolved = x.SecondPartyEnvolved
});
GetAllLawsuitsOutputPort.Handle(Lawsuites);
return Task.CompletedTask;
}

我试图改变GUID的签名对象,我正在很好地接收这些数据。从EF上下文解析对象到Entity类似乎有问题。

您没有详细说明GetAllLawsuit()方法中的内容,但是EF默认情况下不会急于加载相关实体,因此您可能只是ToList()'ing内容,然后集合将从数据库加载,Signatures

为空引用。如果您删除对GetAllLawsuit()的调用并直接从DbContext中使用Select投影,那么它将工作。

您还可以通过在您的GetAllLawsuit方法中使用Include扩展方法来强制EF急切加载您的相关实体。

最新更新