我正在使用C#构建REST Web API。我的代码分为4层:
- 模型
- 存储库
- 服务
- Web API
如何有效地连接服务和存储库模型,而无需重复代码?现在,我的一个Service Layer类看起来像这样:
Install-Package Microsoft.SqlServer.Types
这让我觉得非常有用,我发现自己写了很多几乎相同的课程?有任何想法吗?感谢
答案 0 :(得分:2)
您的问题没有简单或简短/快速的答案。此外,在设计系统架构时会发挥很多变量。我只想提出一些通用建议:
对于特定的代码示例,通常的做法是在注入操作时将代码隔离在单个位置(服务),并将其用作跟随DRY的命令。此外,它避免了重构时的不一致。
考虑例子:
public class ContactosService : IContactosService
{
private readonly IContactRepository repository;
public ContactosService(IContactRepository repository)
{
this.repository = repository;
}
public void AddContact(Contact_mdl value)
{
repository.Execute(rep => rep.Add(value));
}
public void DeleteContact(int id)
{
repository.Execute(rep => rep.Delete(id));
}
}
public class ContactRepository : IContactRepository
{
private readonly string _empresaId;
public ContactRepository(string empresaId)
{
_empresaId = empresaId;
}
public void Execute(Action<Contact_rep> command)
{
using (var myCon = new AdoNetContext(new AppConfigConnectionFactory(_empresaId)))
{
using (var rep = new Contact_rep(myCon))
{
command(rep);
}
}
}
}