我有 2 个实体,如下所示:
public class User {
[Key]
public string UserID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
[ForeignKey("Status")]
public char StatusCode { get; set; }
public UserStatus Status { get; set; }
...
}
public class UserStatus {
[Key]
public char StatusCode { get; set; }
public string StatusDescription { get; set; }
}
我想要做的是使用 StatusCode 属性创建 Entity Framework Core 关系。我的 SQL Server 数据库中有一些表镜像这些实体。不幸的是,我没有构建它们,也无法更改数据类型。
UserStatus 表如下所示:
| StatusCode (char) | StatusDescription (varchar(100)) |
| ----------------- | -------------------------------- |
| A | Active |
| L | LockedOut |
| N | NotActivated |
虽然此代码似乎可以运行,但通过 WebAPI 控制器调用时返回的 JSON 是这样的:
{
"UserId": "abcdefg",
"FirstName": "Jon",
"LastName": "Snow",
"Email": "[email protected]",
"LastLogon": "9999-12-31T00:00:00",
"StatusCode": "A",
"Status": null
}
我期望看到的不是 Status 为 null 的内容,例如:
{
"UserId": "abcdefg",
"FirstName": "Jon",
"LastName": "Snow",
"Email": "[email protected]",
"LastLogon": "9999-12-31T00:00:00",
"StatusCode": "A",
"Status":
{
StatusCode: "A",
StatusDescription: "Active"
}
}
任何人都可以看到我犯的错误吗?
我认为为了获取您想要的数据,您在实体之间建立的关系没有问题,您应该对 ef 查询执行与下面相同的操作:
var blogs = context.Blogs
.Include(blog => blog.Posts)
.ToList();
我的意思是你应该使用 .Include() 方法加载查询中的数据。
我希望它对你来说很方便。