首页 > 解决方案 > 具有相同属性存储库模式的多个实体

问题描述

我有一个通用的 UOW 存储库模式。我需要添加一些具有相同属性但名称彼此不同的实体。有没有最简单的方法来访问存储库,而不必分别实例化每个实体存储库。

这是实体结构的示例代码。

    public int Id  { get; set; }
    public string UserId { get; set; }
    public int ProductId { get; set; }
    public int OrderedQuantity { get; set; }
    public int FreeQuantity { get; set; }
    public double TotalPrice { get; set; }
    public double DiscountOffered { get; set; }
    public double TotalBilled { get; set; }

实体可以像AbcProduct / XyzProduct / MnoProduct 等。它们将是此类产品的大约 10-12 个不同实体,不能使用 CategoryId 保存在单个表下。这些表将经常在数据库中多次使用和更新,这就是我们希望采用这种方法的原因。

在此先感谢您的帮助。

标签: c#asp.net-mvcrepository-patternunit-of-work

解决方案


您可以使它们共享一个通用界面。

public interface IProduct
{
    public int Id  { get; set; }
    public string UserId { get; set; }
    public int ProductId { get; set; }
    public int OrderedQuantity { get; set; }
    public int FreeQuantity { get; set; }
    public double TotalPrice { get; set; }
    public double DiscountOffered { get; set; }
    public double TotalBilled { get; set; }
}

只要AbcProductXyzProductMnoProduct实现该接口,您就可以使用该接口类型的通用存储库

GenericRepository<IProduct> genericRepository;

var abcProduct = new AbcProduct();
var xyzProduct = new XyzProduct();
var mnoProduct = new MnoProduct();

genericRepository.Add(abcProduct);
genericRepository.Add(xyzProduct);
genericRepository.Add(mnoProduct);

推荐阅读