【发布时间】:2019-09-30 13:24:07
【问题描述】:
我在Asp.Net Core 应用程序中实现了Repository Pattern。我正在使用通用类作为基础存储库:
public class GenericRepository<T> : IDisposable, IGenericRepository<T>, IGenericRepositoryAsync<T>
where T : BaseEntity, new()
{
// Standard methods like: GetById, Update, Delete etc.
}
我的Domain 后面有特定的存储库:FeedRepository、UserRepository。还有Entities:Post,ApplicationUser。
我的FeedRepository 看起来像这样:
public class FeedRepository : GenericRepository<Post>, IFeedRepository
{
// Specific methods for Feed
}
问题是我需要为所有其他存储库使用GenericRepository,但我的ApplicationUser 实体扩展IdentityUser 而不是BaseEntity。
有没有办法让 GenericRepository 有 2 种可能的类型? T 可以有时是BaseEntity 有时是IdentityUser 吗?
【问题讨论】:
-
在 NHibernate 或 EntityFramework 等 ORM 之上使用时,这是一个反模式。 ORM 是更高级别的抽象。使用
BaseEntity是另一个问题。 ORM 允许您使用任何类,而添加该类型则相反。
标签: c# asp.net-core repository-pattern generic-programming