Log exception to file in c# .net core application explained

In production environment when any bug gets reported at that time as developer wants to get the exception details of bug to resolve the issue on high priority.
In some case there might be situation where exception is not logged in table but developer wants to check the bug immediately. for that purpose we need to write the
exception details including stack trace of bug in file. To implement this easily i am going to demonstrate the implementation of custom logging in file as below.

First we need to construct the exception and logger method in custom logger class as shown below.


public class CustomLogger { public static List<string> ConstructExceptionDetails(Exception ex,string FunctionName) { return new List<string>() { $"{DateTime.Now} - {FunctionName}", $"Exception: {ex.Message}", $"StackTrace: {ex.StackTrace}", $"InnerException: {ex.InnerException?.…

All about the IEnumerable VS IQueryable in c#

In Linq or entity framework, we use IEnumerable and IQueryable for data manipulation or query data. IEnumerable is inherited by IQueryable, Hence IQueryable has all the features of IEnumerable and except this, it has its own features and benefits.

Both have its own importance to query data and data manipulation in different situations in the application. we can go through with both the features and take the advantage of both the features to boost the LINQ Query performance. As per the need of application at some stage IEnumerable is useful and some stage in the application IQueryable is useful. Lets discuss about its use and features now.


IEnumerable Features:


  • IEnumerable exists in System.Collections Namespace.
  • IEnumerable can move forward only over a collection, it can’t move backward and between the items.
  • IEnumerable is best to query data from in-memory collections like List, Array etc.
  • While query data from database, IEnumerable execute select query on server side, load data in-memory on client side and then filter data.
  • IEnumerable is suitable for LINQ to Object and LINQ to XML queries.
  • IEnumerable supports deferred execution.
  • IEnumerable doesn’t supports custom query.
  • IEnumerable doesn’t support lazy loading. Hence not suitable for paging like scenarios.
  • Extension methods supports by IEnumerable takes functional objects.


Example of IEnumerable:


   MyDataContext dc = new MyDataContext ();  
   IEnumerable<Employee> list = dc.Employees.Where(p => p.Name.StartsWith("S"));  
   list = list.Take<Employee>(10);   

Sql query generation of above Linq Statement:


 SELECT [t0].[ID], [t0].[Name], [t0].[Salary] FROM [Employee] AS [t0]  
 WHERE [t0].[Name] LIKE @p0  



Features of IQueryable :


  • IQueryable is suitable for LINQ to SQL queries.
  • IQueryable supports deferred execution.
  • IQueryable supports custom query using CreateQuery and Execute methods.
  • IQueryable support lazy loading. Hence it is suitable for paging like scenarios.
  • Extension methods supports by IQueryable takes expression objects means expression tree.
  • IQueryable exists in System.Linq Namespace
  • IQueryable can move forward only over a collection, it can’t move backward and between the items.
  • IQueryable is best to query data from out-memory (like remote database, service) collections.
  • While query data from database, IQueryable execute select query on server side with all filters.

Example of the IQueryable:


 MyDataContext dc = new MyDataContext ();  
 IQueryable<Employee> list = dc.Employees.Where(p => p.Name.StartsWith("S"));  
 list = list.Take<Employee>(10);   

Sql query generation of above Linq Statement:


 SELECT TOP 10 [t0].[ID], [t0].[Name], [t0].[Salary] FROM [Employee] AS [t0]  
 WHERE [t0].[Name] LIKE @p0  

This is how the IEnumerable and IQueryable is all about. By reading this article you will be able to boost your LINQ query performance in your application.

Happy Coding ! 

your comments are welcome..


Comments

Popular posts from this blog

Restore the lost focus of Auto post back controls in asp.net update Panel control

Add Comma automatically while entering amounts in textbox using Javascript

Devexpress Datebox date formatting in angular 6 with example