我正在重新设计一个 MVC3 应用程序,以将所有 linq 从控制器中取出并放入适当的层。
我把它作为我的结构 SQL --> EF --> Repository --> Service --> Controller。我正在使用接口。
编译时出现此错误:
gpc.data.service.roleService 没有实现接口成员 gpc.data.interfaces.iroleservice.HolderNamesbyRoleID(int)。
我对适当的架构完全陌生,所以如果这非常明显,我很抱歉哈哈。这是一些代码:
存储库:
namespace gpc.Data.Repositories
{
public class roleRepository :gpc.Data.Interfaces.IRoleRepository
{
private gpc.Models.gpcEntities _entities = new Models.gpcEntities();
public HolderNames HolderNamesbyRoleID(int roleid)
{
return (from i in _entities.HolderNames
where i.roleid == roleid select i).FirstOrDefault();
}
}
}
然后我有一个界面:
namespace gpc.Data.Interfaces
{
public interface IRoleRepository
{
HolderNames HolderNamesbyRoleID(int roleid);
}
}
然后我有服务:
namespace gpc.Data.Service
{
public class roleService : gpc.Data.Interfaces.IRoleService
{
private ModelStateDictionary _modelState;
private gpc.Data.Interfaces.IRoleRepository _repository;
public roleService(ModelStateDictionary modelState)
{
_modelState = modelState;
_repository = new gpc.Data.Repositories.roleRepository();
}
public roleService(ModelStateDictionary modelState,
gpc.Data.Repositories.roleRepository repository)
{
_modelState = modelState;
_repository = repository;
}
public HolderNames HolderNames(int roleid)
{
return _repository.HolderNamesbyRoleID(roleid);
}
}
}
然后我有另一个界面:
namespace gpc.Data.Interfaces
{
public interface IRoleService
{
HolderNames HolderNamesbyRoleID(int roleid);
}
}
我在这个结构中创建了一个非常简单的 ienumerable,并且我能够通过控制器将数据获取到视图中,正如我所期望的那样。我想因为这个比选择所有内容并把它扔到一个视图中要复杂一些,所以我一定错过了一些东西。我不知道这是否有所不同,但“holdernames”是一个 SQL 视图,而不是一个表。
非常感谢任何帮助