首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用C# WebApi从存储库中检索消息

如何使用C# WebApi从存储库中检索消息
EN

Stack Overflow用户
提问于 2020-09-23 05:44:01
回答 2查看 111关注 0票数 1

我仍然在学习如何在C#和WebApi中正确地使用依赖项,并出现了一个问题。我有一个注册用户的存储库,但是由于它是一个async task空方法,所以它不会返回任何内容。所以问题是,做这件事的最好方法是什么?它将使用Task<T>并在Controller中处理结果?

课程:

代码语言:javascript
复制
public interface IGeneral
{
    Task RegisterAsync(UserModel model);
}

public class General : BaseRepository, IGeneral
{
    public General(Context context) : base(context)
    {
    }

    public async Task RegisterAsync(UserModel model)
    {
        var result = await Context.User.Where(a => a.Email == model.Email).FirstOrDefaultAsync();
        if(result != null)
        {
            await Context.User.AddAsync(new Data.Access.Models.User 
            { Date = DateTime.Now, Email = model.Email, Name = model.Name, Password = model.Password });
            await Context.SaveChangesAsync();

        }
        
    }
}

public abstract class BaseRepository
{
    protected readonly Context Context;

    public BaseRepository(Context context)
    {
        Context = context;
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-23 06:44:23

你在问题中提出的可能解决办法

代码语言:javascript
复制
    public async Task<bool> RegisterAsync(UserModel model)
    {
        bool operationResult = false;
        var result = await Context.User.Where(a => a.Email == model.Email).FirstOrDefaultAsync();
        if (result != null)
        {
            await Context.User.AddAsync(new Data.Access.Models.User
                { Date = DateTime.Now, Email = model.Email, Name = model.Name, Password = model.Password });
            if(await Context.SaveChangesAsync() > 0)
            {
               operationResult = true;
            }

        }
    
     return operationResult;
    }

从MSDN文档中我们知道SaveChangesAsync()签名public virtual System.Threading.Tasks.Task<int> SaveChangesAsync ();

返回一个int值。

如果检查大于零的结果,则断言已发生更改,并已使更改保持不变。

票数 1
EN

Stack Overflow用户

发布于 2020-09-23 06:10:38

不应该使用Task<T>返回类型的RegisterAsync(UserModel model)方法来处理控制器中的结果,因为

必须在methods.

  • Repostiory方法中处理异常,并且可以在结果中返回bool返回类型,但是在生产过程中,当捕捉到异常时,必须为这些异常编写日志。

可以保持此方法的原样,并且可以在服务中或控制器中适当地使用try catch块,这取决于您想要在异常时发送什么,方法是考虑客户端(用户)*的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64021726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档