gpt4 book ai didi

c# - Visual Studio 2015 存储库模式不包含定义

转载 作者:太空宇宙 更新时间:2023-11-03 19:48:41 25 4
gpt4 key购买 nike

我的存储库模式有问题,今天早上它还在工作,所以我不明白这是我的代码:

IRepository:

public interface IRepository<T> where T : class
{
List<T> GetAll();
List<T> GetSome(int index, int pageSize);
T GetOne(int id);
T Add(T entity);
void Update(T entity);
void Delete(T entity);
}

用户资源库:

interface IUserRepository : IRepository<User>
{
}

用户资料库:

public class UserRepository : IUserRepository
{
public User Add(User entity)
{
throw new NotImplementedException();
}

public void Delete(User entity)
{
throw new NotImplementedException();
}

public List<User> GetAll()
{
return new SchoolContext().User.ToList();
}

public User GetOne(int id)
{
throw new NotImplementedException();
}

public List<User> GetSome(int index, int pageSize)
{
throw new NotImplementedException();
}

public void Update(User entity)
{
throw new NotImplementedException();
}
}

测试文件:

class Program
{
static void Main(string[] args)
{
var source = new User().GetAll();
foreach (var item in source)
{
Console.WriteLine(item.Login);
}

Console.Read();

}
}

我在测试文件中得到的错误是:

User does not contain a definition for 'GetAll' and no extension method'GetAll' accepting a first argument of type 'User' could be found

我只是想在控制台中显示登录列表,我做错了什么?

最佳答案

您应该创建存储库:

var source = new UserRepository().GetAll();
^

但您正在创建 User实体代替。

提示:与其在每次调用存储库上的任何方法时都创建上下文,不如将上下文传递给存储库并为所有操作使用一个上下文。否则,您将不得不将实体附加到新上下文以进行修改,因为新上下文不会跟踪实体。最好控制上下文的生命周期,以避免在使用延迟加载的实体时出现上下文处理类的错误。

public class UserRepository : IUserRepository
{
private SchoolContext db;

public UserRepository(SchoolContext db)
{
this.db = db;
}

public List<User> GetAll()
{
return db.User.ToList();
}
}

事件更多-您可以创建基础抽象存储库Repository<T>它将通过 Set<T> 的方法提供此类通用功能来自上下文。

关于c# - Visual Studio 2015 存储库模式不包含定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42394326/

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