Thursday, October 8, 2015

Partial View

Intorduction

Hope you all aware concept of UserControl in asp.net which is use for making common things in one control and use everywhere in web application.

Similarly in MVC we have Partial View which renders the view content.Meaning it helps you to reduce your code and also avoid duplication.

For example if you have Address Control which includes address related controls and you have to put address in many place in your web application. So here you can make Partial view which reduce your time and duplication.

Create Partial View

Below are few steps to create Partial view and How to use of it :

Step 1 : To create partial view go to your solution and go to view folder and right click on View folder.and follow below image.

Add New Partial View

Step 2 :  Click on view and it will open below window, Now in that you need to tick "Create Partial view" and you have now same view as normal view but it will created as a partial view.


Now if you want to reuse partial view then its good habit to put in "Shared" folder under Views folder so you can view in whole application

Step 3 :  To call and render partial view you can use below two methods.Below are two method to call partial view


  1.   
  2.     @Html.Partial("PartialView")  
 
  •  
  •   
  •     @{  
  •         Html.RenderPartial("PartialView");  
  •     }  

  • @Html.Partial - This method renders the view as an HTML-encoded string. So using this method we can store result in string.

    @Html.RenderPartial - This method is written directly into the HTTP response, it means that this method used the same TextWriter object as used by the current view. This method returns nothing.

    Step 4 - Render Partial view from controller file using below approach:

    1. public ActionResult PartialView()  
    2. {  
    3.     return PartialView();  
    4. }  
      

    Using this way you can create Partial view and render and call your view.You can also pass the model to the partial view for strongly binding same as we pass in normal view.







    Tuesday, October 6, 2015

    Entity Framework - Lazy,Eager, Explicit loading

    Entity Framework

    There are several ways that the Entity Framework can load related data into the navigation properties of an entity:

    Lazy loading. When the entity is first read, related data isn't retrieved. However, the first time you attempt to access a navigation property, the data required for that navigation property is automatically retrieved. These results in multiple queries sent to the database — one for the entity itself and one each time that related data for the entity must be retrieved.



    Eager loading. When the entity is read, related data is retrieved along with it. This typically results in a single join query that retrieves all of the data that's needed. You specify eager loading by using the Include method.




    Explicit loading. This is similar to lazy loading, except that you explicitly retrieve the related data in code; it doesn't happen automatically when you access a navigation property. You load related data manually by getting the object state manager entry for an entity and calling the Collection.Load method for collections or the Reference.Load method for properties that hold a single entity. (In the following example, if you wanted to load the Administrator navigation property, you'd replace Collection(x => x.Courses) with Reference(x => x.Administrator).)




    Because they don't immediately retrieve the property values, lazy loading and explicit loading are also both known as deferred loading.
    In general, if you know you need related data for every entity retrieved, eager loading offers the best performance, because a single query sent to the database is typically more efficient than separate queries for each entity retrieved. For example, in the above examples, suppose that each department has ten related courses. The eager loading example would result in just a single (join) query. The lazy loading and explicit loading examples would both result in eleven queries.
    On the other hand, if you need to access an entity's navigation properties only infrequently or only for a small portion of a set of entities you're processing, lazy loading may be more efficient, because eager loading would retrieve more data than you need. Typically you'd use explicit loading only when you've turned lazy loading off. One scenario when you might turn lazy loading off is during serialization, when you know you don't need all navigation properties loaded. If lazy loading were on, all navigation properties would all be loaded automatically, because serialization accesses all properties.
    The database context class performs lazy loading by default. There are two ways to turn off lazy loading:

    • For specific navigation properties, omit the virtual keyword when you declare the property. 
    • For all navigation properties, set LazyLoadingEnabled to false. 

    Lazy loading can mask code that causes performance problems. For example, code that doesn't specify eager or explicit loading but processes a high volume of entities and uses several navigation properties in each iteration might be very inefficient (because of many round trips to the database), but it would work without errors if it relies on lazy loading. Temporarily disabling lazy loading is one way to discover where the code is relying on lazy loading, because without it the navigation properties will be null and the code will fail.

    Identity Framework Basic

    Identity Framework

    Asp.net team has introduce new Identity Framework which replaced the old membership framework.Identity has more features then before.

    In Today's world everyone want to authenticate web using third party social services like Facebook,Twitter and LinkedIn.Using Identity you can easily integrate third party social login into your web applications.

    Before start learning features of Identity install the sample project using below command

    PM> Install-Package Microsoft.AspNet.Identity.Samples -Pre 

    In sample project they have given all basic things like login/logout/Forgot Password/Email Confirmation and all other basic things.

    Identity Features


    • Account Lockout: Using Identity we can configure the account lockout attempt so after failed attempt user account is locked for certain period. We can configure the duration and also we can set the how many time user can try.
    • Account Confirmation: ASP.NET Identity allows us to confirm the account by confirming the email of the user. 
    • Two-Factor Authentication via email or SMS messaging, functionally similar to that used by Google, Microsoft, and others.We can also enable/disable this 2FA after login.  I will discuss more about two factor later on.
    • Improved support for Social log-ins. We can easily integrate third party logins in our web application. I will explain more on this with example 
    Below are the main component of Identity
    1. User 
    2. Role
    3. User Manager
    4. Role Manager
    5. Authentication Manager
    6. Entity Framework DBContext
    I will explain more in separate blog about each and every feature with example.