c# - 具有相同属性存储库模式的多个实体
问题描述
我有一个通用的 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 保存在单个表下。这些表将经常在数据库中多次使用和更新,这就是我们希望采用这种方法的原因。
在此先感谢您的帮助。
解决方案
您可以使它们共享一个通用界面。
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);
推荐阅读
- java - 根据全局布尔值运行一组测试
- sql - 如何合并来自同一个表的两个分组查询?
- bash - bash 脚本的 if 和 else 语句
- database - Weblogic 控制台上的应用程序 STOP/START 上的 ADF Web 应用程序数据库连接问题
- javascript - Fetch API 中的请求信号属性
- excel - 使用 R1C1 符号和动态工作表参考编码 SUMIF 的难度
- excel - Excel VBA Outlook - 主题包含未找到回复电子邮件
- java - 使用 C++ 打开 Android 手电筒
- android - 禁用 Android 自动填充验证码
- stripe-payments - 您没有设置有效的可发布密钥。在 laravel 中清除缓存后,使用您的可发布密钥调用 stripe.setpublishablekey()