一直在到处寻找教程什么的。
我一直在尝试将 MVC5 的旧通用存储库模式实现到新的 MVC6 项目中。
我设置了 3 个类库.Core
, .Data
and .Service
,但是有一个问题IDBset
,似乎我的智能感知不喜欢它,我尝试添加System.Data
和实体框架 6,但没有任何运气(找不到它......令人困惑)。
漫游谷歌后,我决定在这里问,是否有正确方法的教程,或者有人可以提出一个非常简单的 MVC6 通用存储库模式吗?我有一种感觉,旧的方法可能已经改变了,只是似乎找不到除了内置 DI 之外的任何信息。
代码:
我的IDbContext
界面
IDbSet<TEntity> Set<TEntity>() where TEntity : BaseEntity;
没有看到IDbSet
,这仅仅是因为实体框架吗?我确实有它的参考文献。
问题可能是我找不到实体框架的 using 语句。
UPDATE:
使用实体框架 8.0.0 beta。将所有 IDbset 引用更改为 DbSet。
然而,在我的通用存储库中,我使用以下方法:
public virtual T GetById(object id)
{
return this.Entities.Find(id);
}
“寻找”不是一种方法。我不能再在我的捕获中使用“DbEntityValidationException”。
Entity Framework 7 Beta 8 不附带 Find 方法。它可能会在最终版本之前添加。
您必须使用FirstOrDefault
方法代替,直到发生这种情况
public virtual T GetById(int id)
{
return this.Entities.FirstOrDefault(x => x.Id == id);
}
Because Id
属性将无法被识别,您必须添加一个接口并使您的存储库实现它。
public interface IEntity
{
int Id { get; set; }
}
e.g.
public class GenericRepository<T> : IGenericRepository<T> where T: class, IEntity
来自github 问题列表 https://github.com/aspnet/EntityFramework/issues/3322。 EF7 不执行自动数据验证,因此 EF7 中不存在 DbEntityValidationException。
请注意:EF7 不是 EF 的更新,而是重写。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)