c# – 在哪里放置验证逻辑?在服务或存储库?

发布时间:2019-03-14 整理:脚本之家 作者:未知
脚本之家收集整理的这篇文章主要介绍了c# – 在哪里放置验证逻辑?在服务或存储库?脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随脚本之家小编过来看看吧!
我有一些这样的逻辑,在将库存保存到数据库之前,我将检查库存中是否存在相同的库存代码.我的问题是我应该在服务层或存储库层中放置逻辑.这是示例代码:
选项1:放入服务层,我将IsAccountAlreadyExists方法放在服务层中
public override void Save(AccountInfo accountInfo)
{
    using (var scope = new TransactionScope())
    {
        if(this.IsAccountAlreadyExists(accountInfo))
        {
            throw new AccountAlreadyExistedException(
                "Account Code : " + accountInfo.AccountCode +
                " already existed.");
        }

        accountRepository.Save(accountInfo);
            scope.Complete();
    }
}

选项2:我将把IsAccountAlreadyExists逻辑移动到存储库层.

public override void Save(AccountInfo accountInfo)
{
    try
    {
        using (var scope = new TransactionScope())
        {
            accountRepository.Save(accountInfo);
            scope.Complete();
        }
    }
    catch(AccountAlreadyExistedException e)
    {
        ...
    }
}

你怎么看?

我认为这是三层(定义了连接每个部分的接口):

> Data Repository – 仅用于存储和检索原始数据.尽可能少的逻辑在这里.
>商业模式 – 所有的智能都在这里,包括验证.
>服务(即客户端访问) – 一个非常薄的部分,足以提供与客户端的连接.

这样,如果您选择以其他方式存储数据,验证逻辑不会随之丢失.

同样,如果您决定提供不同形式的客户端访问,则无需复制大量逻辑即可完成.

总结

以上是脚本之家为你收集整理的c# – 在哪里放置验证逻辑?在服务或存储库?全部内容,希望文章能够帮你解决c# – 在哪里放置验证逻辑?在服务或存储库?所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。