多个查找表的MVC核心存储库模式

时间:2018-05-21 20:23:37

标签: c# asp.net-mvc asp.net-core

我们有Customer事务表,其中包含多个带外键的查找表。当CustomerService创建客户订单交易时,我们希望使用这些查找表创建下拉菜单。如果某人稍后查看了这些交易,他们会看到4个表连在一起。

我会创建吗,

(a)4个与4个存储库的接口,

(b)或2个接口(1个用于客户交易,1个用于查找表的接口),1个用于客户交易的存储库,以及3个用于查找表接口的存储库?

我们希望将Lookup表Repository中继到下面的SelectList。每个选择列表都在挑选某些列。希望提高代码效率。

模特:

public class CustomerTransaction
{
    public int CustomerTransactionId{ get; set; },
    public int ProductTypeId {get; set; }, //joins to ProductTypeTable
    public int StatusKey {get; set; },  //joins to StatusTypeTable
    public int CustomerTypeId {get; set; } //joins to CustomerTypeTable
    public string DateOfPurchase{ get; set; },
    public string PurchaseAmount { get; set; },
}

public class ProductType
{
    public int ProductTypeId{ get; set; }
    public int Size { get; set; }
    public int Weight { get; set; },
    public string ProductName { get; set; },
    public string ProductDescription { get; set; },
}

public class StatusType
{
    public int StatusKey{ get; set; }
    public string Description{ get; set; },
    public string Symbol { get; set; },
}

public class CustomerType
{
    public int KeyNumber{ get; set; },
    public int Height{ get; set; }
    public string HairColor{ get; set; },
    public string NameOfPerson{ get; set; },
    public string ResearchNotes{ get; set; },
}

下拉列表中的必填字段

ViewData["ProductTypeId"] = new SelectList(_context.ProductType, "ProductName", "ProductDescription");

ViewData["KeyNumber"] = new SelectList(_context.CustomerType , "NameofPerson", "Description");

ViewData["StatusKey"] = new SelectList(_context.StatusType, "Symbol", "ResearchNotes");

1 个答案:

答案 0 :(得分:1)

您可以创建一个数据传输对象(DTO)来满足您的前端需求。

public class EditTransaction {
    CustomerTransaction customerTransaction { get; set; }
    SelectList productTypes { get; set; }
    SelectList statusType { get; set; }
    SelectList customerTypes { get; set; }
}

包含一个类/方法/控制器/访问DAL存储库并组装DTO的任何内容。您的客户端代码会选择DTO。在存储库和用户界面中没有任何“特殊”。