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

前端之家收集整理的这篇文章主要介绍了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 – 仅用于存储和检索原始数据.尽可能少的逻辑在这里.
>商业模式 – 所有的智能都在这里,包括验证.
>服务(即客户端访问) – 一个非常薄的部分,足以提供与客户端的连接.

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

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

原文链接:https://www.f2er.com/csharp/101030.html

猜你在找的C#相关文章