我正在从 CodeFirst 迁移到 DatabaseFirst 以映射我的视图。在我的 CodeFirst 方法中,我有一个这样的基本实体:
public abstract class BaseEntity
{
/// <summary>
/// Gets or sets the entity identifier
/// </summary>
public virtual int Id { get; set; }
... // Some more methods here for equality checking
}
我从这个基类派生了我的所有类,因为它们中的每一个都有一个 Id。所以我用这个 BaseClass 创建了一个通用存储库。我的存储库如下所示:
public partial class EfRepository<T> where T : BaseEntity
{
public readonly DemirbasContext context;
private DbSet<T> _entities;
/// <summary>
/// Ctor
/// </summary>
/// <param name="context">Object context</param>
public EfRepository(DemirbasContext context)
{
this.context = context;
}
public T GetById(object id)
{
return this.Entities.Find(id);
}
public void Insert(T entity)
{
try
{
if (entity == null)
throw new ArgumentNullException("entity");
this.Entities.Add(entity);
this.context.SaveChanges();
}
catch (Exception e)
{
...
}
}
// Other methods here Update, Delete etc
所以我能够通过像这样指定泛型类型参数来创建存储库
EfRepository<Car> carRepo = new EfRepository<Car>();
在 DatabaseFirst 中,我无法从基类派生实体类。有没有办法做到这一点,或者你有什么建议?