我有一个通用的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的单个表下。这些表将在数据库中经常使用和更新多次,这就是为什么我们希望采用这种方法。
预先感谢您的帮助。
答案 0 :(得分:1)
您可以使它们共享一个公共界面。
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; }
}
只要AbcProduct
,XyzProduct
和MnoProduct
实现该接口,就可以使用该接口类型的通用存储库
GenericRepository<IProduct> genericRepository;
var abcProduct = new AbcProduct();
var xyzProduct = new XyzProduct();
var mnoProduct = new MnoProduct();
genericRepository.Add(abcProduct);
genericRepository.Add(xyzProduct);
genericRepository.Add(mnoProduct);
答案 1 :(得分:0)
您当然可以使用继承。使用抽象类作为基类。
public abstract class Product
{
public abstract int Id { get; set; }
public abstract string UserId { get; set; }
public abstract int ProductId { get; set; }
public abstract int OrderedQuantity { get; set; }
public abstract int FreeQuantity { get; set; }
public abstract double TotalPrice { get; set; }
public abstract double DiscountOffered { get; set; }
public abstract double TotalBilled { get; set; }
}
然后导出其他乘积
public class abcProduct:Product
{
public override int Id { get; set; }
...
}