【发布时间】:2017-01-07 05:46:27
【问题描述】:
我在我们的 App 中使用 Asp.net core 和 Dapper。这是我的 User Repository Add 方法。(连接字符串将通过依赖注入)
public User Add(User user)
{
string query = @"Insert into Users(UserName,Email,LastName,Password) values (@UserName , @Email, @LastName , @Password );
select Cast(Scope_Identity() as int)";
Try
{
using (var db = connectionFactory.GetOpenConnection())
{
int id = db.Query<int>(query, user).Single();
user.UserId = id;
return user;
}
} Catch(Exception e){ //log exception}
}
在我的启动类中,我包含了全局异常处理程序
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
// StatusCode pages to gracefully handle status codes 400-599.
app.UseStatusCodePagesWithRedirects("~/Home/StatusCodePage");
app.UseExceptionHandler("/Home/Error");
}
}
我的问题是是否在存储库的每个方法中都需要 try catch?还是asp.net core会自动处理全局异常/Sql excption?
请告诉我正确的方法,因为我不想在每个方法中都包含 try catch
【问题讨论】:
-
您所指的术语是横切关注。阅读与全局错误处理相关的主题。理想情况下,您希望保持实施精益并具有单一职责 (SRP)。
标签: c# asp.net-mvc asp.net-core dapper