gpt4 book ai didi

c# - 对 IRepository 的困惑

转载 作者:行者123 更新时间:2023-12-03 10:13:48 26 4
gpt4 key购买 nike

当实际加载数据时,我对使用“IRepository 模式”时感到有些困惑。

目前我有这样的事情:

public class MainViewModel : ViewModelBase
{
// EF4 generated ObjectContext
private ScorBotEntities context = new ScorBotEntities();

// Custom IUserRepository class
private IUserRepository userRepository;

public MainViewModel()
{
this.userRepository = new UserRepository(context.Users);
}

public ObservableCollection<User> Users
{
get
{
return new ObservableCollection<User>(userRepository.GetAll());
}
}
}

ScorBotEntities 是使用 EF4 自动生成的(我查看了 POCO,为这个规模的项目做了很多工作)。

您可以在此处找到 UserRepository 的定义: http://code.google.com/p/i4prj4-g2/source/browse/ScorBotRobotics/ScorBotRobotics/Repositories/UserRepository.cs

但基本上,我想知道的是,为什么在这里使用存储库是有意义的,而不是像这样写:
public class MainViewModel : ViewModelBase
{
private ScorBotEntities context = new ScorBotEntities();

public MainViewModel()
{
}

public ObservableCollection<User> Users
{
get
{
return new ObservableCollection<User>(context.Users);
}
}
}

抽象功能是有意义的,例如使用 UsernameAndPassword 方法。但在那种情况下,也许使用一些查询对象会更理想?

最佳答案

我有点困惑你的上下文已经进入了你的 ViewModel。我相信你的 GUI 层不应该看到上下文 .上下文必须由 IRepository 打开/保留/关闭.让数据层 (IRepository) 返回 Users 的数组/列表.

关于c# - 对 IRepository 的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3696633/

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