gpt4 book ai didi

c# - ASP.NET 5 MVC 6 通用存储库模式

转载 作者:太空狗 更新时间:2023-10-30 01:02:32 25 4
gpt4 key购买 nike

到处寻找教程之类的东西。

我一直在尝试将 MVC5 的旧通用存储库模式实现到新的 MVC6 项目中。

我设置了 3 个类库的 .Core , .Data.Service , 但是 IDBset 有问题,似乎我的智能感知不喜欢它,我尝试添加 System.Data和 Entity Framework 6,但没有任何运气(找不到它......令人困惑)。

漫游谷歌后我决定在这里问一下,是否有正确方法的教程或者有人可以提出一个非常简单的 MVC6 通用存储库模式?我有一种感觉,旧的方法可能已经改变,除了内置的 DI 之外似乎找不到任何信息。

代码:我的IDbContext界面

IDbSet<TEntity> Set<TEntity>() where TEntity : BaseEntity;

没有看到 IDbSet ,这仅仅是因为 Entity Framework ?我确实有它的引用资料。

问题可能是我找不到 Entity Framework 的使用声明。

更新:

使用 Entity Framework 8.0.0 测试版。将所有 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);
}

因为 Id 属性不会被识别,所以您必须添加一个接口(interface)并让您的存储库实现它。

public interface IEntity
{
int Id { get; set; }
}

例如

 public class GenericRepository<T> : IGenericRepository<T> where T: class, IEntity

来自github issues list . EF7 不执行自动数据验证,因此 EF7 中不存在 DbEntityValidationException。

请注意:EF7 不是 EF 的更新,而是重写。

关于c# - ASP.NET 5 MVC 6 通用存储库模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33647984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com