【问题标题】:Spliting a big table by category into smaller ones按类别将大表拆分为较小的表
【发布时间】:2022-02-16 11:09:03
【问题描述】:

我有一个使用 EF Core 的 ASP.NET Core Web API。我有多种卖家类型(医生/造型师),都有相同的型号,即 id、姓名、位置。

我在想,与其将每个卖家推入seller 表并添加category 列来对它们进行分类,不如拥有一个每个卖家将从中继承的基本模型类,并让每个卖家输入他的表(出于对大型数据库的性能原因)。

例如:如果我想要一个医生,我只查询医生表而不是整个卖家表。

现在我的问题是我想从仅接收 Seller 对象的SellerController 执行此操作,并且在其中我想将它们转换为医生/造型器模型以使用正确的表格。

但是我该怎么做呢?

就像在我的控制器的每个端点中的一个巨大的开关盒旁边。我认为我可以构建一个接收Seller 对象并返回一个医生/样式器对象的转换器,但是那个返回类型应该是什么?

public class Stylist
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Location { get; set; }
}

public class Doctor
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Location { get; set; }
}

新的

public class BaseSeller
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Location { get; set; }
}
    
public class Stylist : BaseSeller
{

}
    
public class Stylist : BaseSeller
{

}

【问题讨论】:

    标签: sql entity-framework-core asp.net-core-webapi


    【解决方案1】:

    也许你可以使用这个,传递 BaseSeller 和你想转换成的 ClassName:

    public Object ConvertBaseSeller(BaseSeller Seller,string ClassName) {
                if (ClassName == "Stylist")
                {
                    Stylist s = JsonConvert.DeserializeObject<Stylist>(JsonConvert.SerializeObject(Seller));
                    return s;
                }
                else{
                    Doctor d= JsonConvert.DeserializeObject<Doctor>(JsonConvert.SerializeObject(Seller));
                    return d;
                }
                
            }
    

    然后这样称呼它:

    var s = ConvertBaseSeller(new BaseSeller(), "Doctor");
    

    【讨论】:

      猜你喜欢
      • 2012-08-18
      • 2012-07-12
      • 2020-05-05
      • 1970-01-01
      • 2021-12-16
      • 2013-08-16
      • 1970-01-01
      • 1970-01-01
      • 2012-02-14
      相关资源
      最近更新 更多