繁体   English   中英

Blazor中的DataSet父子嵌套关系

[英]DataSet Parent-Child Nested Relation in Blazor

blazor有DataSet父子嵌套关系吗? 如果是,如何申请或使用它?

谢谢。

我想做的是构建类似嵌套中继器的东西,但在 blazor

在最简单的情况下,您可能有一个数据库表对,一个公司和许多员工

class Company{
  int Id {get;set;}
  string Name {get;set;}
  ICollection<Employee> Employees {get;set;}
};

class Employee{
  int Id {get;set;}
  string Name {get;set;}
  int CompanyId {get;set;}
  Company Company {get;set;}
};

您会让 EFC 为您下载它们并将它们固定到公司经理和相关员工详细信息中

    
  override async Task OnInitializedAsync(){

    var context = new YourdbContext();

    _companies = context.Companies.Include(c => c.Employees).ToListAsync();
    

  }

这将在 razor 页面上

@page "someurl/here"

@foreach(var c in _companies){
    <h3>@c.Name</h3>
    @foreach(var e in c.Employees){
        <div>@e.Name</div>
    }
}
@code{

    List<Company> _companies;

    //oninitialized here 
}

这不是一个生产级示例。 在时间充足的时候,我相信你会填写更多,也许 map 数据库实体来查看模型并枚举那些,为每个员工和公司制作组件等。

..但作为基本转储,我们使用像 Entity Framework Core 这样的东西,它了解我们的对象之间的关系以及我们的表之间的关系,并将下载所有公司和所有员工,并弄清楚哪个与之相关。

以前是一个数据关系,现在是一个 object 父级,里面有一个 object 个子级的列表。 如果您修改任何 object,EFC 会检测到它,并将保留更改(如 DataRow 行 state 和适配器)。 如果您清除子集合或删除父集合,EFC 将按照级联删除行为编码的方式处理相关数据,就像数据关系用于

延伸阅读

如果您计划注入上下文,请阅读https://learn.microsoft.com/en-us/as.net/core/blazor/blazor-server-ef-core?view=as.netcore-6.0

如果您想降低启动和运行 EFC 的门槛,我真的会考虑先创建数据库,安装 EFCorePowerTools 并将数据库反向工程到您的代码中; 什么是快速“制作两个表、5 列、一个数据库图并在它们之间拖动关系,就像我们在数据集中所做的那样”然后变成一个完全设置的上下文,实体类和属性都在几秒钟内完成; 无需输入 c#

Henk 提供了一个好博客的链接,那里有大量组件库,其中包含表格控件,可以执行时髦的“单击行以显示子项”(我使用 MudBlazor 和 Blazorise)..

..这只是为了成为一个绝对的骨架“这就是我们如何表现得像一个中继器;我们放置循环来重复发出标记,上下文相关数据改变循环的每次传递”向您介绍我们如何可能的概念代码在 razor

我与提到的任何软件都没有任何关系

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM