是否可以使用 char 字段创建 EF 关系?

问题描述 投票:0回答:1

我有 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"
    }
}

任何人都可以看到我犯的错误吗?

c# .net entity-framework-core char
1个回答
0
投票

我认为为了获取您想要的数据,您在实体之间建立的关系没有问题,您应该对 ef 查询执行与下面相同的操作:

 var blogs = context.Blogs
        .Include(blog => blog.Posts)
        .ToList();

我的意思是你应该使用 .Include() 方法加载查询中的数据。
我希望它对你来说很方便。

© www.soinside.com 2019 - 2024. All rights reserved.