wpf 连接客户端或API服务器上的数据以及如何连接?

whitzsjs  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(123)

我有一个ASP.NET Core API和一个WPF项目(都是.NET6)。我的API使用一个带有EntityFrameworkCore的数据库,WPF项目是一个从API检索数据/向其发送数据的客户机。

型号

数据库包含从两个类生成的 * 两个表 *:Class1Class2(简化说明)。

public class Class1
{
    [Key]
    public Guid Id { get; set; }

    [ForeignKey(nameof(Class2))]
    public Guid Class2Id { get; set; }

    public string PropToDisplay1 { get; set; }
}

public class Class2
{
    [Key]
    public Guid Id { get; set; }

    public string PropToDisplay2 { get; set; }
}

查看

我的客户端视图包含一个Datagrid,我想用它来显示PropToDisplay1PropToDisplay2。此视图的数据上下文当前仅包含链接到数据网格的Class1中的List。这将显示PropToDisplay1Class2Id。现在我想将Class1中的Class2Id替换为Class2中的PropToDisplay2
问题
我实现了第二个类,它继承自Class1并包含Class2属性。因此,我必须从我的API中分别获取这两个类,并将它们放在本地。这似乎不是关于Class2中的更改的最佳选择,因为我必须获取比我想要的更多的内容以使所有内容都保持最新。
我发现的另一种方法是在服务器端连接这两个表,然后将它们传递给客户机。这似乎更好,但我不确定如何在我的客户端实现这一点,以允许编辑和减少冗余。

czfnxgou

czfnxgou1#

修改您的API端点以返回联接数据:创建一个端点,在Class1Class2上执行连接操作并返回所需数据。举例来说:

[HttpGet("joinedData")]
public async Task<IActionResult> GetJoinedData()
{
    var result = await _dbContext.Class1
        .Join(
            _dbContext.Class2,
            c1 => c1.Class2Id,
            c2 => c2.Id,
            (c1, c2) => new
            {
                c1.Id,
                c1.PropToDisplay1,
                c2.PropToDisplay2
            }
        )
        .ToListAsync();

    return Ok(result);
}

相关问题