tag:blogger.com,1999:blog-91758792758641160662024-02-06T20:24:58.054-08:00Software Engineering in .Net Software Engineering, articles on Microsoft Technologies and platformsarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.comBlogger20125tag:blogger.com,1999:blog-9175879275864116066.post-46245576634842083572021-06-01T02:01:00.010-07:002023-08-10T09:36:02.084-07:00Software Design Principles
<b:if cond='data:blog.metaDescription != ""'><meta expr:content='data:blog.metaDescription' name='description'/></b:if>
<h3 style="text-align: left;"><span style="font-family: arial; font-size: small;"> Introduction</span></h3><p><span style="font-family: arial;"><span>In software design, there are many principles and practices which are followed. Few of them are listed below.</span></span></p><p><span style="font-family: arial;"><b>SOLID:</b> </span></p><p><span style="font-family: arial;"><span>In Object Oriented Programming, SOLID is mnemonic acronym for 5 design principles to make software design more understandable, extensible and maintainable. </span><br /></span></p><p><span style="font-family: arial;"> <b>Single Responsibility Principle</b>: There should never be more than one reason for a class to change. In other words, every class should have only one responsibility. This means for other responsibility create separate class.</span></p><p><span style="font-family: arial;"><b>Open Closed Principle</b>: Software entities (class, function, module etc.) should be open for extension but closed for modification. Using Inheritance and polymorphism we can achieve this.</span></p><p><span style="font-family: arial;"><b>Liskov Substitution Principle</b>: Object of a superclass should be replaceable with object of its subclasses without breaking the functionality.</span></p><p><span style="font-family: arial;"><b>Interface Segregation Principle</b>: No client should be forced to depend on a method if does not use. This means breaks a large interface into smaller and more specific interfaces so that <span style="background-color: white; color: #202122;">clients will only have to know about the methods that are of interest to them.</span></span></p><p><span style="font-family: arial;"><span style="background-color: white; color: #202122;"><b>Dependency Inversion Principle</b>: </span><span style="background-color: white; color: #202122;">The principle states</span></span></p><div style="background-color: white; color: #202122;"><ol style="list-style-image: none; list-style-type: upper-alpha; margin: 0.3em 0px 0px 3.2em; padding: 0px;"><li style="margin-bottom: 0.1em;"><span style="font-family: arial;">High-level modules should not depend on low-level modules. Both should depend on abstractions (e.g., interfaces).</span></li><li style="margin-bottom: 0.1em;"><span style="font-family: arial;">Abstractions should not depend on details. Details (concrete implementations) should depend on abstractions.</span></li></ol><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;"><b>IOC or Inversion of Control Principles</b>: </span></div><div><span style="color: #303633;"><span style="font-family: arial;"><span> </span>also known as the Hollywood Principle - "Don't call us, we'll call you"</span></span></div><div><span style="color: #303633;"><span style="font-family: arial;"><br /></span></span></div><div><span style="font-family: arial;"> IoC inverts the flow of control as compared to traditional control flow. In IoC, custom-written portions of a computer program receive the flow of control from a generic framework. </span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;">A software architecture with this design inverts control as compared to traditional procedural programming: in traditional programming, the custom code that expresses the purpose of the program <span style="color: #0645ad;"><span style="background-attachment: initial; background-clip: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial;">calls</span></span> into reusable libraries to take care of generic tasks, but with inversion of control, it is the framework that calls into the custom, or task-specific, code.</span></div><div><span style="font-family: arial;"><br /></span></div><div><span style="color: #303633;"><span style="font-family: arial;">Inversion of Control is a key part of what makes a framework different to a library. A library is essentially a set of functions that you can call, these days usually organized into classes. Each call does some work and returns control to the client.</span></span></div></div><p><span style="font-family: arial;"><b> Dependency Injection</b>: When an object of class X uses specific functionality of object of class Y to perform some action, it is called X depends on Y or X has a dependency on Y. </span></p><p><span style="font-family: arial;">Now definition of DI, "Process of creating and passing an object for some other object, it depends on is called Dependency Injection". It is a type of IOC principle.</span></p><p><span style="font-family: arial;">Object who receives the reference is <b>client</b>. Object which is injected is <b>service </b>and <b style="background-color: white; color: #202122;">injector</b><span style="background-color: white; color: #202122;">, which is responsible for constructing the services and injecting them into the client.</span></span></p><p><span style="font-family: arial;"><span style="background-color: white; color: #202122;"><b>KISS</b>: Keep it simple stupid. </span></span><span face="Roboto, Helvetica, sans-serif" style="background-color: white; color: #111111; font-size: 16px;">The</span><span face="Roboto, Helvetica, sans-serif" style="background-color: white; color: #111111; font-size: 16px; font-weight: 700;"> KISS principle</span><span face="Roboto, Helvetica, sans-serif" style="background-color: white; color: #111111; font-size: 16px;"> states that most systems work best if they are kept simple rather than made complicated; therefore, simplicity should be a key goal in design, and unnecessary complexity should be avoided.</span></p><span style="font-family: arial;"><b>Law of Demeter: </b>Don't talk to stranger. There should well defined interface or contract to talk to outside the library, framework etc. It should talk to friends(inside classes of module) not strangers (outside library, framework etc.)</span><div><span style="font-family: arial;"><br /></span></div><div><span style="font-family: arial;"><br /></span><p><span><span><span style="font-family: arial;"> </span></span><br /></span></p></div>sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-45365129102252416082021-05-31T06:37:00.008-07:002021-06-01T00:10:02.898-07:00Command Design Pattern in C#<span> </span><h3 style="text-align: left;"> Introduction</h3><p><span> Command design pattern encapsulates request as an object which has all the information needed to perform an action or invoke a method or trigger an event at later time. It supports undoable action.</span></p><p><span>It is a behavior design pattern.</span></p><p><span>It deals with below problems</span><br /></p><p><span>1. Decouples the request receiver and request invoker.</span></p><p><span>2. Code is extensible as new Receiver and command be added in future.</span></p><h3 style="text-align: left;">UML Diagram</h3><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgi75HDS-E1HOH9SRE8n70cI_D3C0hflOHJ_GnpdFWYKSZ2vn30eYUhnBdgFl1fkwpwKJQGP7gUP0ncJjxD5boA__U8Fgy_qbDOLs4ydl5qVHrc-sG4497kEyWb-EXTdrlUwnNeCbsXimk/s541/command-design-pattern.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="229" data-original-width="541" height="172" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjgi75HDS-E1HOH9SRE8n70cI_D3C0hflOHJ_GnpdFWYKSZ2vn30eYUhnBdgFl1fkwpwKJQGP7gUP0ncJjxD5boA__U8Fgy_qbDOLs4ydl5qVHrc-sG4497kEyWb-EXTdrlUwnNeCbsXimk/w408-h172/command-design-pattern.jpg" width="408" /></a></div><br /><h3 style="text-align: left;">Example Basic structure program</h3><p>using System;</p>public class Program<br />{<br /><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"> public static void Main()<br />{<blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;">var receiver = new Receiver();</blockquote><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;">var command = new ConcreteCommand(receiver);</blockquote><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;">var invoker = new Invoker(command);</blockquote><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;">invoker.DoAction();</blockquote>}</blockquote>}<br /><br /> public class Receiver<br />{<br /><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;">public void DoOperation()<br />{<br /><span> </span>Console.WriteLine("Receiver is doing the operation");<br />}</blockquote>}<br /><br />public interface ICommand<br />{<br /><span> </span>void Execute();<br />}<br /><br /> public class ConcreteCommand:ICommand<br />{<br /><span> <span> </span></span>private Receiver _receiver;<br /><span> <span> </span></span>public ConcreteCommand(Receiver receiver)<br /><span> <span> </span></span>{<br /><span> </span><span> </span><span> </span>_receiver = receiver;<br /><span> </span><span> </span>}<br /><br /><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div>public void Execute()</div><div>{</div><div><span> </span>_receiver.DoOperation();</div><div>}</div></blockquote><div>}<br /><br /> public class Invoker<br />{<br /><span> </span>private ICommand _command;<br /><span> </span>public Invoker(ICommand command)<br /><span> </span>{<br /><span> </span><span> </span>_command = command;<br /><span> </span>}<br /><br /></div><div><span> </span>public void DoAction()<br /><span> </span>{<br /><span> </span><span> </span>_command.Execute();<br /><span> </span>}<br />}<br /><br />In the above code, we can see Command and Invoker have been created separately. This means </div><div>Invoker can execute the command at a later point of time or deferred execution of command.</div><div>Command can be queued and executed.</div><div>Command can be created on one server & can be executed on another server in distributed systems.</div><div>Waiter and Chef (cook) are very good example of command pattern. As Waiter takes the order from the customer, he passed it to chef. Chef prepares the food and waiter serves it to customer. </div><div><br />Real World Example</div><div><span> Write to me for real world example.</span><br /></div><div><br /><br /><br /><br /><br /><br /><br /><br /> <br /><br /></div>sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-53666116241141885572021-05-26T03:09:00.005-07:002021-05-26T04:16:06.784-07:00Observer Design Pattern in C#<h3 style="text-align: left;"> Introduction</h3><p><span> In Observer design pattern an object 'subject' maintains the list of its dependent objects , observers, and notify them whenever there is a change in its state. It is a behavior design pattern.</span><br /></p><p><span>It deals with below problems</span></p><p><span>- Define One to many dependency between objects without making them tightly coupled.</span></p><p><span>- Whenever there is a change in one object, other objects should get notified or updated.</span></p><h3 style="text-align: left;">UML diagram</h3><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK2TiieYKiyACRwL-x9mhbIrQXsiQLJsQm0EHeMEYGGyd5Ov6SDA_yLn2NNE_-H4RfYr57f56lagMQanQSKBXF7fCpE460RoNHRA-j70qcztvom7pMzaLMEIjd03wHwGTJW3vPxaJZ1h0f/s691/observer-design-pattern.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="276" data-original-width="691" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgK2TiieYKiyACRwL-x9mhbIrQXsiQLJsQm0EHeMEYGGyd5Ov6SDA_yLn2NNE_-H4RfYr57f56lagMQanQSKBXF7fCpE460RoNHRA-j70qcztvom7pMzaLMEIjd03wHwGTJW3vPxaJZ1h0f/s320/observer-design-pattern.jpg" width="320" /></a></div><br /><div><br /></div><h3 style="text-align: left;">Basic code example</h3><p><br /> public class Subject<br />{ </p><p> <span> </span>private IList<IObserver> _observers;<br /> private int state;</p><div><span> </span><span style="color: #b45f06;">// On change of this property, observers will be notified</span><br /> <span> </span>public int State{<br /><span> </span><span> </span>get{return state;}<br /><span> </span><span> </span>set{state = value; this.Notify();}<br /><span> </span>}<br /><br /><div><span> </span>public Subject()<br /><span> </span>{<br /><span> </span><span> </span>_observers = new List<IObserver>();<br /><span> </span>}<br /></div><div><br /></div><div style="text-align: left;"> <span style="color: #b45f06;"> // Register Observer to get notification</span></div><div style="text-align: left;"><span> </span>public void RegisterObserver(IObserver observer)</div><div><span> </span>{<br /><span> </span><span> </span>_observers.Add(observer);<br /><span> </span>}</div><div><br /></div><div><span style="color: #b45f06;"> //Remove Observer to stop getting notification</span><br /> public void RemoveObserver(IObserver observer)<br /> {<br /> _observers.Remove(observer);<br /> }</div><div><br /> <span style="color: #b45f06;">//Send notification</span><br /></div><div><span> </span>private void Notify()<div><span style="white-space: pre;"> </span>{</div><div><span style="white-space: pre;"> </span>var eventArg = new EventArg(){Value=4};</div><div><span style="white-space: pre;"> </span>foreach(var observer in _observers)</div><div><span style="white-space: pre;"> </span>observer.Execute(eventArg);</div><div><span style="white-space: pre;"> </span>}</div>}<br /><br /><span style="color: #b45f06;">//Observer interface</span><br />public interface IObserver<br />{<br /><span> </span>void Execute(EventArg eventarg);<br />}<br /></div></div><div><br /></div><div><div>public sealed class EventArg</div><div>{</div><div><span style="white-space: pre;"> </span>public int Value{get;set;}</div><div>}</div></div><div><br /></div><div><span style="color: #b45f06;">//Concrete ObserverA implementation of IObserver</span></div>public class ObserverA:IObserver<br />{<br /> <span> </span>public void Execute(EventArg eventArg)<div><span style="white-space: pre;"> </span>{</div><div><span style="white-space: pre;"> </span>Console.WriteLine($"ObserverA is execute & eventArg : {eventArg.Value}");</div><div><span style="white-space: pre;"> </span>}</div>}<br /><br /><span style="color: #b45f06;">//Concrete ObserverB implementation of IObserver</span><br />public class ObserverB:IObserver<br />{<br /> <span> </span>public void Execute(EventArg eventArg)<div><span style="white-space: pre;"> </span>{</div><div><span style="white-space: pre;"> </span>Console.WriteLine($"ObserverB is execute & eventArg: {eventArg.Value}");</div><div><span style="white-space: pre;"> </span>}</div>}<div><br /></div><div>Program </div><div><div>using System;</div><div>using System.Collections.Generic;</div><div><br /></div><div>public class Program</div><div>{</div><div><span style="white-space: pre;"> </span>public static void Main()</div><div><span style="white-space: pre;"> </span>{</div><div><span style="white-space: pre;"> </span>var subject = new Subject();</div><div><span style="white-space: pre;"> </span>subject.RegisterObserver(new ObserverA());</div><div><span style="white-space: pre;"> </span>subject.RegisterObserver(new ObserverB());</div><div><span style="white-space: pre;"> </span>subject.State = 4;</div><div><span style="white-space: pre;"> </span>}</div><div>}</div></div><div><br /></div><div><span style="color: #b45f06;">//Since subject State property is changed when it is assigned with value 4, Observers get notification</span></div><div><span style="color: #b45f06;">//Output</span></div><div> <span style="background-color: #fefefe; color: #333333; font-family: monospace; font-size: 11.7px; white-space: nowrap;">ObserverA is execute & eventArg : 4</span></div><span style="background-color: #fefefe; color: #333333; font-family: monospace; font-size: 11.7px; white-space: nowrap;"> ObserverB is execute & eventArg: 4</span><div><span style="color: #333333; font-family: monospace;"><span style="white-space: nowrap;"><br /></span></span></div><div><span style="white-space: nowrap;"><i><b><span style="color: #2b00fe;"><span style="font-family: monospace;">In DotNet for this purpose there is </span><span style="font-family: helvetica; font-size: medium;">Delegate & Event </span><span style="font-family: monospace;">Type to achieve the same.</span></span></b></i><br /></span><div><br /></div></div>sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-12392272568258073332021-05-26T00:14:00.008-07:002021-05-26T02:32:03.148-07:00FlagsAttributes in C#<h3 style="text-align: left;"> Introduction</h3><p><span> In C# enum is a named integer constant. But a type can have only one enum value. FlagsAttribute is used to assign multiple enum values.</span></p><h3 style="text-align: left;">Example</h3><p>using System;<span style="white-space: pre;"> </span></p><p>public class Program</p><p>{</p><p><span style="white-space: pre;"> </span>public static void Main()</p><p><span style="white-space: pre;"> </span>{</p><p><span style="white-space: pre;"> </span>var rocky = new Person("Rock", Vehicle.BMWX5);</p><p><span style="white-space: pre;"> </span>var peter = new Person("Peter Parker", Vehicle.Highlander);</p><p><span style="white-space: pre;"> </span>rocky.PersonInfo();</p><p> <span style="color: #2b00fe;">//Output: </span><span style="background-color: #fefefe; font-family: monospace; white-space: nowrap;"><span style="color: #2b00fe;">Rock owns BMWX5</span></span></p><p><span style="white-space: pre;"> </span>peter.PersonInfo();</p><p> <span style="color: #2b00fe;"> //Output: </span><span style="background-color: #fefefe; font-family: monospace; white-space: nowrap;"><span style="color: #2b00fe;">Peter Parker owns Highlander</span></span></p><p><span style="white-space: pre;"> </span>}</p><p>}</p><p>public class Person</p><p>{</p><p><span style="white-space: pre;"> </span>public string Name{get;set;}</p><p><span style="white-space: pre;"> </span>public Vehicle Vehicle{get;set;}<span style="white-space: pre;"> </span></p><p><span style="white-space: pre;"> </span>public Person(string name, Vehicle vehicle)</p><p><span style="white-space: pre;"> </span>{</p><p><span style="white-space: pre;"> </span>Name = name;</p><p><span style="white-space: pre;"> </span>Vehicle=vehicle;</p><p><span style="white-space: pre;"> </span>}<span style="white-space: pre;"> </span></p><p><span style="white-space: pre;"> </span>public void PersonInfo()</p><p><span style="white-space: pre;"> </span>{</p><p><span style="white-space: pre;"> </span>Console.WriteLine($"{Name} owns {Vehicle}");</p><p><span style="white-space: pre;"> </span>}<span style="white-space: pre;"> </span></p><p>}</p><p>public enum Vehicle</p><p>{</p><p><span style="white-space: pre;"> </span>none=0,</p><p><span style="white-space: pre;"> </span>BMWX5=1,</p><p><span style="white-space: pre;"> </span>LandRover=2,</p><p><span style="white-space: pre;"> </span>LincolnAviator=4,</p><p><span style="white-space: pre;"> </span>Highlander=8</p><p>}</p><p>In the above program, one person can own one vehicle.</p><p>What if a person owns 2 or more vehicles. In this case FlagsAttribute is useful.</p><p>using System;<span style="white-space: pre;"> </span></p><p>public class Program</p><p>{</p><p><span style="white-space: pre;"> </span>public static void Main()</p><p><span style="white-space: pre;"> </span>{</p><p><span> </span><span> </span><span> </span><span> //vehicle2 is now represents 2 vehicles BMWX5 and Highlander both.</span><br /></p><p><span style="white-space: pre;"> </span><span style="color: #2b00fe;">var vehicle2 = Vehicle.BMWX5|Vehicle.Highlander;</span></p><p><span> </span><span style="white-space: pre;"> </span>var rocky = new Person("Rock", Vehicle.BMWX5);</p><p><span style="white-space: pre;"> </span>var peter = new Person("Peter Parker", Vehicle.Highlander);</p><p><span> </span><span> </span><span> </span><span> // John owns vehicle2 means he has 2 vehicles.</span><br /></p><p><span style="white-space: pre;"> </span>var john = new Person("John", vehicle2);</p><p><span style="white-space: pre;"> </span></p><p><span style="white-space: pre;"> </span>rocky.PersonInfo();</p><p><span style="white-space: pre;"> </span>peter.PersonInfo();</p><p><span style="white-space: pre;"> </span>john.PersonInfo();<span style="white-space: pre;"> </span></p><p><span style="white-space: pre;"> <span style="color: #2b00fe;"> //Output: </span></span><span style="background-color: #fefefe; font-family: monospace; font-size: 11.7px; white-space: nowrap;"><span style="color: #2b00fe;">John owns BMWX5, Highlander</span></span><span style="white-space: pre;"> </span></p><p><span style="white-space: pre;"> </span>}</p><p>}</p><p><br /></p><p>public class Person</p><p>{</p><p><span style="white-space: pre;"> </span>public string Name{get;set;}</p><p><span style="white-space: pre;"> </span>public Vehicle Vehicle{get;set;}<span style="white-space: pre;"> </span></p><p><span style="white-space: pre;"> </span>public Person(string name, Vehicle vehicle)</p><p><span style="white-space: pre;"> </span>{</p><p><span style="white-space: pre;"> </span>Name = name;</p><p><span style="white-space: pre;"> </span>Vehicle=vehicle;</p><p><span style="white-space: pre;"> </span>}<span style="white-space: pre;"> </span></p><p><span style="white-space: pre;"> </span>public void PersonInfo()</p><p><span style="white-space: pre;"> </span>{</p><p><span style="white-space: pre;"> </span>Console.WriteLine($"{Name} owns {Vehicle}");</p><p><span style="white-space: pre;"> </span>}<span style="white-space: pre;"> </span></p><p>}</p><p><span style="color: #2b00fe;">[Flags]</span></p><p>public enum Vehicle</p><p>{</p><p><span style="white-space: pre;"> </span>none=0,</p><p><span style="white-space: pre;"> </span>BMWX5=1,</p><p><span style="white-space: pre;"> </span>LandRover=2,</p><p><span style="white-space: pre;"> </span>LincolnAviator=4,</p><p><span style="white-space: pre;"> </span>Highlander=8</p><p>} </p><p><a href="https://dotnetfiddle.net/hmsrZo" rel="nofollow" target="_blank">Complete Code</a></p><p><br /></p>sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-52099163981142809262021-05-25T02:46:00.003-07:002021-05-26T03:18:00.184-07:00Rest Principles<h3 style="text-align: left;"><span style="font-family: arial;"> Introduction</span></h3><p><span> </span><span style="font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Representational State Transfer (REST) is an architectural style that abstracts the architectural elements within a distributed hypermedia system. It was first presented by </span><span face=""open sans", "segoe ui historic", "segoe ui", Helvetica, Arial, sans-serif" style="background-color: white; font-size: 17px;"> </span><span face=""open sans", "segoe ui historic", "segoe ui", Helvetica, Arial, sans-serif" style="background-color: white; font-size: 17px;">Roy Fielding in 2000.</span></p><p><span id="docs-internal-guid-96ec0952-7fff-ffd4-4ec0-a4593e522628"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The REST architectural style describes six constraints applied to the architecture which are described below:</span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;"><br /></span></span></p><p><br /></p><h3 style="text-align: left;"><span id="docs-internal-guid-294f0d7a-7fff-7446-7526-fad311f51277"><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Client–Server</span></span></h3><p></p><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div style="text-align: justify;"><span style="font-family: Arial; font-size: 11pt; text-align: left; white-space: pre-wrap;">This princples is based on separation of concerns principles. It is about separating client interface from data storage concers. This means client (facing) application should not handle data storage or management activity while server should not handle user interface or user state or how user is interacting with the application.</span></div><p><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Since both the client and server are independent of each other. They can be developed independently and will be more manageable and scalable. </span></span></p></blockquote><p></p><h3 style="text-align: left;"><span style="font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Stateless</span></h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: left;"><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Server should not store any client context information. Each client request shuould contain all the necessary information to handle the request. Session state should be held in the client</span></span></p></blockquote><h3 style="text-align: left;"><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Cacheable</span></span></h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><p style="text-align: left;"><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Client can cache responses. Response can be, implicitly or explicitly, labeled as cacheable or non-cacheable. So that client can reuse the same response data in future for equivalent request.</span></span></p></blockquote><h3 style="text-align: left;"><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Layered system</span></span></h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><p><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">It allows to use multiple hierarchical layers to compose the application. e.g. API can be deployed to Server X, database on Server B etc.</span></span></p><p><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">A client cannot ordinarily tell whether it is connected directly to the end server, or to an intermediary along the way. </span></span></p><p><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Intermediary servers may be useful in load-balancing, cache management, security etc.</span></span></p></blockquote><h3 style="text-align: left;"><span style="font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Code on demand (optional)</span></h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><span><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">Servers can temporarily extend or customize the functionality of a client by the transfer of executable code. Examples of this may include compiled components such as Java applets and client-side scripts such as JavaScript. "Code on demand" is the only optional constraint of the REST architecture.</span></span></blockquote><h3 style="text-align: left;"> <span style="font-family: Arial; font-size: 11pt; white-space: pre-wrap;">Uniform interface</span></h3><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><p><span style="font-family: Arial; font-size: 11pt; font-variant-east-asian: normal; font-variant-numeric: normal; vertical-align: baseline; white-space: pre-wrap;">The uniform interface between clients and servers, simplifies and decouples the architecture, which enables each part to evolve independently. The four guiding principles of this interface are detailed below.</span></p></blockquote><p style="text-align: left;"></p><ol style="text-align: left;"><ol><li><span face="-apple-system, BlinkMacSystemFont, "Segoe UI", "Liberation Sans", sans-serif" style="background-color: white; border: 0px; box-sizing: inherit; color: #535a60; font-size: 15px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Identification of resources</span></li><li><span face="-apple-system, BlinkMacSystemFont, "Segoe UI", "Liberation Sans", sans-serif" style="background-color: white; border: 0px; box-sizing: inherit; color: #535a60; font-size: 15px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span face="sans-serif" style="color: #202122; font-size: 14px;">Resource manipulation through representations</span></span></li><li><span face="-apple-system, BlinkMacSystemFont, "Segoe UI", "Liberation Sans", sans-serif" style="background-color: white; border: 0px; box-sizing: inherit; color: #535a60; font-size: 15px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: inherit; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Self-descriptive messages</span></span></li><li><span face="-apple-system, BlinkMacSystemFont, "Segoe UI", "Liberation Sans", sans-serif" style="background-color: white; border: 0px; box-sizing: inherit; color: #535a60; font-size: 15px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;"><span style="border: 0px; box-sizing: inherit; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;">Hypermedia as the engine of application state </span></span></li></ol></ol><p></p><p><span style="font-family: Arial; font-size: 11pt; white-space: pre-wrap;"><br /></span></p>sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-8015137493037241162021-05-18T02:33:00.011-07:002021-05-18T03:20:51.035-07:00Strategy Design Pattern in C#<h3 style="text-align: left;">Introduction</h3><div><span> Strategy design pattern enables to select one of the algorithms at run time. It is a behavior design pattern and is based on Inheritance principle.</span><br /></div><div><span> </span></div><div><span>It deals with</span></div><div style="text-align: left;"><span><span> 1. Multiple possible algorithms for a problem. Or When there is a family of algorithm for a problem. </span></span></div><div><span> 2. Dynamically any algorithm can be selected based on certain input.</span><br /></div><div><span><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBdn9_nSwLjypVhVj_G2SBpY8dTEVz6tvDcOcCHqTZ23JwRdAUsSQh2B4J-tTex7vvxmF3KwodoSJY0q3M_c8SqPFJFdke86gkQ2xYzV-qgdww0YnVdf0OJDWAy_TXQ5S66ID7yz15W0Lj/s571/strategy-1.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="206" data-original-width="571" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBdn9_nSwLjypVhVj_G2SBpY8dTEVz6tvDcOcCHqTZ23JwRdAUsSQh2B4J-tTex7vvxmF3KwodoSJY0q3M_c8SqPFJFdke86gkQ2xYzV-qgdww0YnVdf0OJDWAy_TXQ5S66ID7yz15W0Lj/s320/strategy-1.jpg" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><h3 style="text-align: left;"><span> Example</span></h3></div><ol style="text-align: left;"><li>In eCommerce application online payment system, there are multiple payment options</li></ol><ul style="text-align: left;"><ul><li>Cash on delivery</li><li>CreditCard</li><li>UPI </li><li>Internet Banking etc.</li></ul></ul><div><span><span><span><span><span><span><span><span> 2. String Sorting </span><br /></span></span></span></span></span></span></span></div><div><ul style="text-align: left;"><ul><li><span><span><span><span><span><span><span><span>Bubble Sort</span></span></span></span></span></span></span></span></li><li>Merge Sort</li><li>Quick Sort etc.</li></ul></ul> 3. A manufacturing company pays its employee on weekly basis. If amount is less than 2000 dollor, it it is paid in cash and employee sign on voucher against cash received. If amount is more than or equal to 2000 dollor it is paid by cheque. </div><div><span> In this scenario, payment can be implmented as Cash and Cheque. Amount is the factor which drive which payment option will be selected.</span><br /></div><div><br /></div><div><i>This design pattern is one of the most frequently used one.</i></div><div><br /></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px;"><h3 style="text-align: left;">Implementation</h3></blockquote><div><br /></div><div> public interface IStrategy</div><div> {</div><div> <span style="white-space: pre;"> </span>void Execute();</div><div> }</div><div><br /></div><div>public class StrategyA: IStrategy</div><div>{</div><div><span style="white-space: pre;"> </span>public void Execute()</div><div><span style="white-space: pre;"> </span>{</div><div><span style="white-space: pre;"> </span>Console.WriteLine("This is implementation of StrategyA::Execute");</div><div><span style="white-space: pre;"> </span>}</div><div>}</div><div><br /></div><div>public class StrategyB: IStrategy</div><div>{</div><div><span style="white-space: pre;"> </span>public void Execute()</div><div><span style="white-space: pre;"> </span>{</div><div><span style="white-space: pre;"> </span>Console.WriteLine("This is implementation of StrategyB::Execute");</div><div><span style="white-space: pre;"> </span>}</div><div>}</div><div><br /></div><div> public class Context</div><div>{</div><div><span> private IStrategy _strategyA, _strategyB;</span><br /></div><div><span><br /></span></div><div style="text-align: left;"><span><span> public Context()</span></span></div><div style="text-align: left;"> {</div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"> _strategyA = new StrategyA();</blockquote><p><span> </span><span> </span><span> </span><span> </span>_strategyB= new StrategyB(); </p> }<div><span><span><br /></span></span></div><div><span><span><span> public void OperationA()</span><br /></span></span></div><div><span><span><span><span> {</span></span></span></span></div><div><span><span><span><span><span> </span><span> Console.WriteLine("Context OperationA method");</span><br /></span></span></span></span></div><div><span><span><span><span><span> </span><span> _strategyA.Execute();</span><br /></span></span></span></span></div><div><span> </span>_strategyB.Execute();</div><div><span><span><span><span><br /></span></span></span></span></div><div><span><span><span><span><span> </span>}</span><br /></span></span></span></div><div>}</div><div><br /></div><div><br /></div><div><br /></div><div>Note: Most of the time Strategy is used along with factory. For real world example please write to me.</div><div><br /></div><div> </div><div><span><span><span><span><span> </span><span> </span><br /></span></span></span></span></div>sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-68461245382941494042021-05-14T09:33:00.019-07:002021-05-18T03:25:45.944-07:00 State Design Pattern in C#<h3 style="text-align: left;"></h3><h3 style="line-height: normal; text-align: left;"><span style="color: black; font-family: arial; font-size: medium; mso-fareast-font-family: "Times New Roman";">Introduction </span></h3>
<p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; font-weight: normal; mso-fareast-font-family: "Times New Roman";">State Design Pattern is
a behavior design pattern. It allows an object to change or alter its behavior
on change of its internal state.<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; font-weight: normal; mso-fareast-font-family: "Times New Roman";">It deals with 2 main
problems<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; font-weight: normal; mso-fareast-font-family: "Times New Roman";">a. The object should
change its behavior when its internal state change.<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; font-weight: normal; mso-fareast-font-family: "Times New Roman";">b. State specific behavior
should be defined (programmed) independently. This means on adding new behavior
will not impact on existing behaviors.<o:p></o:p></span></p><h3 style="line-height: normal; text-align: left;"><span style="color: black; font-family: arial; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">UML Class Diagram</span></h3><p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; font-weight: normal; mso-fareast-font-family: "Times New Roman";"><br /></span></p><p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxI57gljRazQWzj1WzDQb_Lkh7CIx1Uyhim0vwQSlCjzfyp7QsB6vF1Y2eO1Uo35zP7IbGq_V46mT63xgdWOr-KRkeFwPFoID4U-zUO5r8N2DC333sDjTbQV637_1Y4_PhcEnLZEDuELkT/s681/state-design-pattern-Page-2.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="176" data-original-width="681" height="107" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxI57gljRazQWzj1WzDQb_Lkh7CIx1Uyhim0vwQSlCjzfyp7QsB6vF1Y2eO1Uo35zP7IbGq_V46mT63xgdWOr-KRkeFwPFoID4U-zUO5r8N2DC333sDjTbQV637_1Y4_PhcEnLZEDuELkT/w414-h107/state-design-pattern-Page-2.jpg" width="414" /></a></div><h3 style="text-align: left;"><span style="font-family: arial; font-size: 12pt;"><br /></span></h3><p><b><span style="font-family: arial; font-size: medium;">Examples</span></b><span style="font-family: arial; font-size: 12pt; font-weight: normal;">:</span></p><p></p>
<p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; font-weight: normal; mso-fareast-font-family: "Times New Roman";">
Below are some examples<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; font-weight: normal; mso-fareast-font-family: "Times New Roman";">1. In Banking System,
based on Average Monthly balanced in a saving account, bank makes the saving
account as Normal, Classic, Privilege category.<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><span style="font-weight: normal;"> </span><b>When account
is Normal,</b></span></p><span style="font-family: arial;"><ul style="text-align: left;"><li><span style="font-family: arial;">user will be charged for Debit card</span></li><li><span style="font-family: arial;"> minimum balance is 5000/- monthly</span></li><li><span style="font-family: arial;"> 5 times free withdraw money from another bank ATM</span></li><li><span style="font-family: arial;"> Daily max withdraw limit is 10000</span></li><li><span style="font-family: arial;">If 5balance is more than 15000 and less than 25000, account will be promoted to Classic. </span></li><li><span style="font-family: arial;">If balance is more than 25000, account will be promoted to Privilege. </span></li></ul></span><p></p>
<p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><span style="font-weight: normal;"> </span><b>When account is
Classic</b><o:p style="font-weight: normal;"></o:p></span></p>
<span style="font-family: arial;"><ul style="text-align: left;"><li><span style="font-family: arial;">user will not be charged for Debit card </span></li><li><span style="font-family: arial;">minimum balance is 15000/- monthly </span></li><li><span style="font-family: arial;">10 times free withdraw money from another bank ATM </span></li><li><span style="font-family: arial;">daily max withdraw is 20000. </span></li><li><span style="font-family: arial;">If balance is more than 25000, account will be promoted to Privilege. </span></li><li><span style="font-family: arial;">If balance is less than 25000, account will become Normal.</span></li></ul></span><p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="color: black; font-family: arial; font-size: 12pt; mso-fareast-font-family: "Times New Roman";"><b>When account is Privileged </b><o:p style="font-weight: normal;"></o:p></span></p>
<span style="font-family: arial;"><ul style="text-align: left;"><li><span style="font-family: arial;">user will not be charged for Debit card</span></li><li><span style="font-family: arial;">minimum balance is 25000/-</span></li><li><span style="font-family: arial;">unlimited free withdraw from another bank ATM</span></li><li><span style="font-family: arial;">daily max withdraw is 50000/-</span></li><li><span style="font-family: arial;"> free Cheque book</span></li><li><span style="font-family: arial;"> personalized banker for help</span></li><li><span style="font-family: arial;">personal loan on 1% less interest rate</span></li><li><span style="font-family: arial;">If balance is less than 25000 and more than 15000 account will become classic</span></li><li><span style="font-family: arial;">If balance is less than 15000, account will become Normal.</span></li></ul></span><p style="line-height: normal; margin-bottom: 0in; text-align: left;"><span style="font-family: arial; font-size: 12pt;"><b>2. Public transport e.g.
Bus</b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: left;"><span style="color: black; font-family: arial; font-size: 12pt; font-weight: normal; mso-fareast-font-family: "Times New Roman";">When
Bus is static at bus stop, </span></p><p class="MsoNormal" style="line-height: normal; margin-bottom: 0in; text-align: left;"></p><ul style="text-align: left;"><li><span style="font-family: arial; font-size: 12pt; text-indent: -0.25in;">Doors should be opened</span></li><li><span style="font-family: arial; font-weight: normal;"><span style="color: black; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Passengers can get on of the bus.<o:p></o:p></span></span></li><li><span style="font-family: arial; font-weight: normal;"><span style="color: black; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Passengers can get down of the bus.<o:p></o:p></span></span></li></ul><p></p>
<p class="MsoNormal" style="line-height: normal; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; text-align: left;"><span style="color: black; font-family: arial; font-size: 12pt; font-weight: normal; mso-fareast-font-family: "Times New Roman";">When
Bus is moving,<o:p></o:p></span></p>
<p class="MsoListParagraphCxSpFirst" style="line-height: normal; margin-bottom: 0in; mso-add-space: auto; mso-list: l4 level1 lfo5; text-align: left; text-indent: -0.25in;"></p><ul style="text-align: left;"><li><span style="font-family: arial; font-weight: normal;"><span style="color: black; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Doors should be closed<o:p></o:p></span></span></li><li><span style="font-family: arial; font-weight: normal;"><span style="color: black; font-size: 12pt; mso-fareast-font-family: "Times New Roman";">Passengers can’t get on or get down of the
bus. <o:p></o:p></span></span></li></ul><p></p>
<span style="font-family: arial; font-size: medium;"><b>3. Vending Machine </b></span><p class="MsoListParagraphCxSpFirst" style="line-height: normal; margin-bottom: 0in; mso-add-space: auto; mso-list: l5 level1 lfo6;"></p><ul style="text-align: left;"><li><span style="font-family: arial;">Ready State: It can accept payment for cash / online accepting </span></li><li><span style="font-family: arial;">Item-Selection State: Customer can select an item </span></li><li><span style="font-family: arial;">Balance-Dispense: Dispense the balance amount </span></li><li><span style="font-family: arial;">Machine is in Item-Dispense State: Selected Item will be dispensed </span></li><li><span style="font-family: arial;">Machine is in Cancel Item State: User cancelled the item; money will be returned.</span></li><li><span style="font-family: arial;">Inventory-Replenishment State: Items are replenished in the vending machine <span style="font-size: 12pt; text-indent: -0.25in;"> </span></span></li></ul><p></p>
<h3 style="text-align: left;"><span style="font-family: arial; font-size: 12pt; line-height: 115%;"><b>Implementation</b></span><span style="font-family: arial; font-size: 12pt; font-weight: normal; line-height: 115%;">:</span></h3>
<p class="MsoNormal"><o:p style="font-weight: normal;"><span style="font-family: arial;"> Context Class</span></o:p></p><p class="MsoNormal"><o:p style="font-weight: normal;"><span style="font-family: arial;">Context class has reference of State.</span></o:p></p><p class="MsoNormal"><o:p style="font-weight: normal;"><span style="font-family: arial;">By default when Context Class is created, it is in StateA.</span></o:p></p><p class="MsoNormal"><o:p style="font-weight: normal;"><span style="font-family: arial;"><br /></span></o:p></p><p class="MsoNormal"><o:p style="font-weight: normal;"></o:p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5Yz45rYgbbWVGCdjSaPp7u18hxsOW2rQrY4mRHwbgV61WsIkJv2M0W2QCqtwB82Oxlzcsh1VbN9d4eGrD9AtujDS22gnGgtMYCKUbkS44syQ29YqSKvpfhxnHjnw9VzryWNYAyLKCh3sG/s339/context.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="271" data-original-width="339" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi5Yz45rYgbbWVGCdjSaPp7u18hxsOW2rQrY4mRHwbgV61WsIkJv2M0W2QCqtwB82Oxlzcsh1VbN9d4eGrD9AtujDS22gnGgtMYCKUbkS44syQ29YqSKvpfhxnHjnw9VzryWNYAyLKCh3sG/s320/context.JPG" width="320" /></a></div><br /><span style="font-family: arial;">State </span><p></p><p class="MsoNormal"><o:p style="font-weight: normal;"></o:p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiarBXus21XvYKCy6Up_jy5nD1W8meM0hykPZ36RqAnSFKoquxGZX8lb9-o9i0o6364GEe9Oj2_fNK5fKDUlbW20BteTifbXGNQ-ZdNtlD1eUjQ4zvv4KT_aUZKXmoFTBvWOmmTxp78aKim/s416/State.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="143" data-original-width="416" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiarBXus21XvYKCy6Up_jy5nD1W8meM0hykPZ36RqAnSFKoquxGZX8lb9-o9i0o6364GEe9Oj2_fNK5fKDUlbW20BteTifbXGNQ-ZdNtlD1eUjQ4zvv4KT_aUZKXmoFTBvWOmmTxp78aKim/s320/State.JPG" width="320" /></a></div><p class="MsoNormal"><o:p style="font-weight: normal;"><br /></o:p></p><span style="font-family: arial;">StateA and StateB</span><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVDc4lnBUMGiHywItdqzioItK_HrGok-qYcm1uszhq39vSZoBUty6K5wuP58qTmp4aB_XcL9tp-jR2rTuAUlQTPeYWMjGAjT7cwudvd5S0Jukla8d9k78-iwNGrNVUHYFZ6o9Gklj65CT5/s573/StateA.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="405" data-original-width="573" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVDc4lnBUMGiHywItdqzioItK_HrGok-qYcm1uszhq39vSZoBUty6K5wuP58qTmp4aB_XcL9tp-jR2rTuAUlQTPeYWMjGAjT7cwudvd5S0Jukla8d9k78-iwNGrNVUHYFZ6o9Gklj65CT5/s320/StateA.JPG" width="320" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzrI923UDufe6w22cxVjJa8f8qNehA1e4qMCFbC8NuSRIdyGvgMWJJhoAhCqVQY2lclV_T0WKPlRl5QHoRYrHq8JSqM9eNj1o9JYCyD5ph1R4S5VPwZzyrvnv1pd18sq7pB0Dcw4TLR9XA/s597/StateB.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="383" data-original-width="597" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzrI923UDufe6w22cxVjJa8f8qNehA1e4qMCFbC8NuSRIdyGvgMWJJhoAhCqVQY2lclV_T0WKPlRl5QHoRYrHq8JSqM9eNj1o9JYCyD5ph1R4S5VPwZzyrvnv1pd18sq7pB0Dcw4TLR9XA/s320/StateB.JPG" width="320" /></a></div><br /><span style="font-family: arial;">Based on ChangeState property, context is changing from StateA to StateB.</span><p></p>
<p class="MsoNormal"><span style="font-family: arial; font-weight: normal;">Sample program is <o:p></o:p></span></p><p class="MsoNormal"><span style="font-family: arial; font-weight: normal;"><a href="https://dotnetfiddle.net/YQB48x" rel="nofollow" target="_blank">State Design Pattern in C#</a></span></p>
<p class="MsoNormal"><br /></p>
<p class="MsoNormal"><span style="font-family: arial; font-weight: normal;">Real world example<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: arial;">subscribe to get real world example</span></p>
<p class="MsoNormal"><o:p style="font-weight: normal;"><span style="font-family: arial;"> </span></o:p></p>
<p class="MsoNormal"><span style="font-family: arial; font-size: 12pt; line-height: 115%;"><o:p style="font-weight: normal;"> </o:p></span></p><br />sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-54606684201665668542017-06-05T00:31:00.001-07:002017-06-05T03:36:30.620-07:00Dotnet Core Web Api, Docker, Consul & Registrator<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Introduction</span></h3>
<div style="text-align: left;">
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> In this article I am going to provide step by step tutorial for creating docker image for docker web api, consul for service registry and discovery, registrator for registering the docker service.</span></div>
</div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<h3 style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Prerequisites</span></h3>
<div>
<ul style="text-align: left;">
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">Sample Web api application is ready and available in working condition in dotnet core.</span></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;">Docker installed on the system.</span></li>
</ul>
</div>
<div style="text-align: left;">
<h3 style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">Steps:</span></span></h3>
</div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> #1: Create a docker file Dockerfile. in bin /Release folder parallel to PublishOutput folder.</span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span></div>
<div style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimEeXIQuLNXts5yWE2miJd8eUZzW4j_VupYz41ekiJ39s4jziNC316KvpVj3KTQ_ACM6NtKvKe7S44STaPdlqpnPN4THIVhLurI7hI6xzgLGtolcoI_YNmz9ZaM75Jo6bi9Di_pf-0iMUh/s1600/Dockerfile.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><img border="0" data-original-height="205" data-original-width="1043" height="77" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimEeXIQuLNXts5yWE2miJd8eUZzW4j_VupYz41ekiJ39s4jziNC316KvpVj3KTQ_ACM6NtKvKe7S44STaPdlqpnPN4THIVhLurI7hI6xzgLGtolcoI_YNmz9ZaM75Jo6bi9Di_pf-0iMUh/s400/Dockerfile.PNG" width="400" /></span></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">#2: Put the below text inside Dockerfile.</span></div>
<div style="background-color: black; color: white;">
<div style="margin: 20px 20px 40px 20px;">
FROM microsoft/dotnet:onbuild <br />
WORKDIR /app <br />
Add PublishOutput /app/ <br />
ENV ASPNETCORE_URLS http://*:5001 <br />
EXPOSE 5001 <br />
RUN dotnet restore <br />
ENTRYPOINT ["dotnet","<service>.dll"]<br />
</service></div>
</div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">#3: Open command prompt pointing to the same path as Dockerfile and then run the below command</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"> >docker build -t <servicename> .</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"> docker images will be created.</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">>docker images</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">will list your image</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">#4: run the docker run command to execute the service</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">>docker run -d -p 80:5001 servicename</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Now browse the service </span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">#5: now stop the docker container</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">#6: pull the consul & registrator images from hub</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">>docker pull gliderlabs/consul-server:latest</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">>docker pull gliderlabs/registrator:latest</span></span></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">#7: run the container for consul</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">>docker run -d --name=consul -p 8300:8300 -p 8500:8500 gliderlabs/consul-server -bootstrap -advertise=127.0.0.1</span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></span></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><span style="font-family: "arial" , "helvetica" , sans-serif;">#8:run the container for the registrator</span></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white;">></span>docker run -d --name=registrator --volume=/var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator:latest consul://localhost:8500</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">#9: Now run the docker container for the web api</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">>docker start <containerId for webapi></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">#10: Browse localhost:8500/ui and click on the services, new service will be listed there.</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">#11. Now client application of web api service can use the consul nuget package to discover the service.</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">var _services =new List<Uri>();</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> var consulClient = new ConsulClient(c => c.Address = new Uri("http://127.0.0.1:8500"));</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> var services = consulClient.Agent.Services().Result.Response;</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> foreach (var service in services)</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> {</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> var isServiceAvailable = service.Value.Service(</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> if (isSchoolApi)</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> {</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> var serviceUri = new Uri($"{service.Value.Address}:{service.Value.Port}");</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> _serverUrls.Add(serviceUri);</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> }</span></div>
<div class="separator" style="clear: both;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"> } </span></div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
<span style="background-color: white;"><br /></span></div>
</div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-12238183865722188752017-03-26T10:14:00.002-07:002017-03-26T10:17:00.627-07:00Creating DotNet Console application container with Docker<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Introduction</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">In this article I am going to provide step by step tutorial how to create docker image for sample dotnet core console sample application.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Prerequisites</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> Below framework needs to be installed on the dev machine</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> Dotnet core & docker</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Steps</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> 1. Create sample console application in c# core as below</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><br />
<div style="background-color: black; padding: 20px;">
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;">using System;</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;">namespace ConsoleApp1</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;">{</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;"> public class Program</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;"> {</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;"> public static void Main(string[] args)</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;"> {</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;"> Console.WriteLine("Test Program");</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;"> }</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;"> }</span><br />
<span style="color: white; font-family: "arial" , "helvetica" , sans-serif;">}</span><br />
<div style="color: white;">
<span style="color: #222222; font-family: "arial" , "helvetica" , sans-serif; font-size: 12px; white-space: pre-wrap;">round-color: black; color: white; padding: 20pxdsfjfaskdjf</span></div>
</div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">2. Compile and publish the application in a folder named <b>PublishOutput.</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b>
3. Run Command Prompt Windows from PublishOutput directory/folder (cmd should point to PublishOutput folder) and type notepad Dockerfile.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">4. Save the file.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">5. Make the below entry in the file and save again</span><br />
<div style="background-color: black; color: white; padding: 20px;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">FROM microsoft/dotnet:onbuild</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">ENTRYPOINT ["dotnet", "ConsoleApp1.dll"]
</span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">6. Execute >docker build -t testapp . </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">7. >docker run testapp
</span></div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-285083827561168032017-03-12T23:37:00.000-07:002017-03-12T23:44:10.593-07:00Bubble Sort<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">
Bubble Sort </span></h2>
<h3 style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Introduction</span></h3>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Bubble sort is a simple sorting algorithm that compares each pair of adjacent items and swaps them if they are in the wrong order. </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The pass through the list is repeated until no swaps are required, which indicates that the list is sorted. </span><br />
<h3 style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><span style="font-family: "arial" , "helvetica" , sans-serif;">C code</span></h3>
<div style="background-color: black; color: white; padding: 20px;">
#include <stdio.h><br />
void BubbleSort(int items[], int length);<br />
void PrintArray(int items[],int length)<br />
{<br />
printf("\n");<br />
for(int i=0; i < length; i++)<br />
{<br />
printf("%d ",items[i]);<br />
}<br />
}<br />
int main()<br />
{<br />
int items[] = {1,4,5,-22,11,3};<br />
<br />
printf("Before sorting\n");<br />
PrintArray(items,6);<br />
printf("\n**********************\n");<br />
BubbleSort(items,6);<br />
printf("\n**********************\n");<br />
printf("after sorting\n");<br />
PrintArray(items,6);<br />
<br />
return 0;<br />
}<br />
<br />
void BubbleSort(int items[], int length)<br />
{<br />
//iterate from first item (index 0) till 2nd last<br />
for(int i=0; i<length-1;i++)<br />
{<br />
//iterate from first item(index 0) till length-(i+1)<br />
for(int j=0; j<length-i-1;j++)<br />
{<br />
if(items[j] > items[j+1])<br />
{<br />
printf("\n swapping between %d and %d",j, j+1);<br />
items[j]= items[j] ^ items[j+1];<br />
<br />
items[j+1] = items[j] ^ items[j+1];<br />
<br />
items[j] = items[j] ^ items[j+1];<br />
PrintArray(items,6);<br />
}<br />
<br />
}<br />
<br />
}<br />
<br />
}<br />
<br />
<br />
<br /></div>
<br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<a href="http://onlinegdb.com/B1_F_nQsl"><span style="font-family: "arial" , "helvetica" , sans-serif;">http://onlinegdb.com/B1_F_nQsl</span></a><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<h3 style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Complexity</span></h3>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Worst Case : О(n<sup>2</sup>)</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Average Case : O(n<sup>2</sup>)</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Best Case : O(n) happens when the list is already sorted. But in this case insertion sort performs better than Bubble Sort.</span></div>
</div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-52640628759806298332017-02-20T09:46:00.002-08:002017-02-20T20:28:32.278-08:00Problem and Technical Approach<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
<br /></div>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">a. An array has N number of positive integers. All numbers occur even number of times exception one number which occurs odd number of times. Find the number.</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;">void GetOddNumberInArray(int[] items)</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"> {</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"> var result = 0;</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"> foreach (var item in items)</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"> {</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"> result = result ^ item; //XOR</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"> }</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"> Console.WriteLine("Odd number in the list is {0}", result);</span><br />
<span style="font-family: "helvetica neue" , "arial" , "helvetica" , sans-serif;"> }</span><br />
b. <span style="font-family: "arial" , "helvetica" , sans-serif;">Check if 2 numbers are equal or not without equal operator.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> if(a XOR b)==0 then a & b are equal or Not.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">c. Number is multiple of 4 Or Not</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> public static void ValidateMultipleof4(int n)</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> {</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> var result = 1;</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> for(int i=2; i<=n;i++)</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> {</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> result = result ^ i;</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> }</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> if (result == n)</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> Console.WriteLine("Multiple of 4");</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> else Console.WriteLine("Not multiple of 4");</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><span style="font-family: "arial" , "helvetica" , sans-serif;">OR (n>>2) is equivalent of division by 4 && again n<<2 is multiplication by 4. So if doing this 2 bit shift operation twice produces same result will be good enough to validate it is multiple of 4.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">d. two same array with one missing number. find out missing one</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> Do the XOR starting with 0. missing will come out.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">e. Odd Number validation, do the & with 1, if output is 0 number is even.</span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-47891492095266612542017-02-18T20:03:00.003-08:002017-02-18T20:22:59.667-08:00LinkedList DataStructure<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Introduction</b>: Linked List is a linear collection of data
elements, called nodes, each pointing to next node. Each node has value (data)
and reference to next node. The first head is called head.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Advantages</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Unlike array it is dynamic in nature as it can grow by
allocating more memory and can shrink or reduce by deallocating the memory while
the application is running.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Insertion & deletion are easily implemented. Item can be
added or removed from anywhere in the sequence.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Disadvantages</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;">It consumes more memory compared to array. Sequential access
of the nodes. <o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Types</b><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Singly Linked List</b>: It contains nodes which have a data
field and a next field which points to the next node in line of nodes. Last
node point to the null.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Doubly Linked List</b>: Apart from data & next field, its
node has one additional field which point to the previous node.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Circular Linked List</b>: Last node, instead of pointing to
null, points to first node.</span><o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
using System;</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
namespace DataStructure</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
public interface ILinkedList<T></div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
void AddLast(Node<T> element);</div>
<div class="MsoNormal">
void Print();</div>
<div class="MsoNormal">
void AddAfter(Node<T> element, T value);</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
void Delete(T value);</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
public class Node<T></div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
public Node<T> Next;</div>
<div class="MsoNormal">
public T Value;</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
public class SinglyLinkedList<T> : ILinkedList<T></div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
private Node<T> _head;</div>
<div class="MsoNormal">
private Node<T> _current;</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
/// <summary></div>
<div class="MsoNormal">
/// Add the element at the last</div>
<div class="MsoNormal">
/// </summary></div>
<div class="MsoNormal">
/// <param name="element"></param></div>
<div class="MsoNormal">
public void AddLast(Node<T> element)</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
if (_head == null) //LinkedList is empty so made it head</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
_head = element;</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
else</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
_current.Next = element;</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
_current = element;</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
/// <summary></div>
<div class="MsoNormal">
/// Display the linkedlist</div>
<div class="MsoNormal">
/// </summary></div>
<div class="MsoNormal">
public void Print()</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
var tmpNode = _head;</div>
<div class="MsoNormal">
while (tmpNode != null)</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
Console.WriteLine("Value stored:{0}",tmpNode.Value);</div>
<div class="MsoNormal">
tmpNode = tmpNode.Next;</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
/// <summary></div>
<div class="MsoNormal">
/// Add the node after the given value</div>
<div class="MsoNormal">
/// </summary></div>
<div class="MsoNormal">
/// <param name="element"></param></div>
<div class="MsoNormal">
/// <param name="data"></param></div>
<div class="MsoNormal">
public void AddAfter(Node<T> element, T data)</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
var tmpNode = _head;</div>
<div class="MsoNormal">
while (tmpNode != null)</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
if(data.Equals(tmpNode.Value)) break;</div>
<div class="MsoNormal">
tmpNode = tmpNode.Next;</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
if(tmpNode==null) throw new Exception("data does not exist in the Linked List");</div>
<div class="MsoNormal">
element.Next = tmpNode.Next;</div>
<div class="MsoNormal">
tmpNode.Next = element;</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
public void Delete(T data)</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
var tmpNode = _head;</div>
<div class="MsoNormal">
if (tmpNode.Value.Equals(data))</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
_head = _head.Next;</div>
<div class="MsoNormal">
return;</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
while (tmpNode.Next != null)</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
if (data.Equals(tmpNode.Next.Value)) break;</div>
<div class="MsoNormal">
tmpNode = tmpNode.Next;</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
if(tmpNode.Next != null && tmpNode.Next.Next != null)</div>
<div class="MsoNormal">
tmpNode.Next = tmpNode.Next.Next;</div>
<div class="MsoNormal">
else //Last Node updatae _current position</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
tmpNode.Next = null;</div>
<div class="MsoNormal">
_current = tmpNode;</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
public class Program</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
public static void Main(string[] args)</div>
<div class="MsoNormal">
{</div>
<div class="MsoNormal">
Console.WriteLine("XXXX------Creating Linked List------XXX");</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
var linkedList = new SinglyLinkedList<int>();</div>
<div class="MsoNormal">
linkedList.AddLast(new Node<int>() { Next = null, Value = 100 });</div>
<div class="MsoNormal">
linkedList.AddLast(new Node<int>() { Next = null, Value = 101 });</div>
<div class="MsoNormal">
linkedList.AddLast(new Node<int>() { Next = null, Value = 102 });</div>
<div class="MsoNormal">
linkedList.Print();</div>
<div class="MsoNormal">
Console.WriteLine("XXXX------Adding at the end------XXX");</div>
<div class="MsoNormal">
linkedList.AddLast(new Node<int>() { Next = null, Value = 103 });</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
linkedList.AddLast(new Node<int>() { Next = null, Value = 105 });</div>
<div class="MsoNormal">
linkedList.AddLast(new Node<int>() { Next = null, Value = 109});</div>
<div class="MsoNormal">
linkedList.Print();</div>
<div class="MsoNormal">
Console.WriteLine("XXXX------Add after------XXX");</div>
<div class="MsoNormal">
linkedList.AddAfter(new Node<int>() { Next = null, Value = 106 },105);</div>
<div class="MsoNormal">
linkedList.Print();</div>
<div class="MsoNormal">
Console.WriteLine("XXXX------Deleting First Node------XXX");</div>
<div class="MsoNormal">
linkedList.Delete(100);</div>
<div class="MsoNormal">
linkedList.Print();</div>
<div class="MsoNormal">
Console.WriteLine("XXXX------Deleting Middle Node------XXX");</div>
<div class="MsoNormal">
linkedList.Delete(103);</div>
<div class="MsoNormal">
linkedList.Print();</div>
<div class="MsoNormal">
Console.WriteLine("XXXX------Deleting Last Node------XXX");</div>
<div class="MsoNormal">
linkedList.Delete(109);</div>
<div class="MsoNormal">
linkedList.Print();</div>
<div class="MsoNormal">
Console.WriteLine("XXXX------Adding after 105------XXX");</div>
<div class="MsoNormal">
linkedList.AddAfter(new Node<int>() { Next = null, Value = 111 }, 105);</div>
<div class="MsoNormal">
linkedList.Print();</div>
<div class="MsoNormal">
Console.WriteLine("XXXX------Adding at the Last------XXX");</div>
<div class="MsoNormal">
linkedList.AddLast(new Node<int>() { Next = null, Value = 120 });</div>
<div class="MsoNormal">
linkedList.Print();</div>
<div class="MsoNormal">
Console.WriteLine("XXXX------Adding at the Last------XXX");</div>
<div class="MsoNormal">
linkedList.AddLast(new Node<int>() { Next = null, Value = 121 });</div>
<div class="MsoNormal">
linkedList.Print();</div>
<div class="MsoNormal">
Console.ReadKey();</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
}</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<a href="https://en.wikipedia.org/wiki/Linked_list" target="_blank">Detailed Analysis Wikipedia</a></div>
<div>
<br /></div>
<div class="MsoNormal">
<br /></div>
<br />
<div class="MsoNormal">
<o:p></o:p></div>
</div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-78937657280820979712017-02-18T11:34:00.000-08:002017-03-24T08:32:26.402-07:00Stack DataStructure<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="margin-bottom: .0001pt; margin: 0in;">
<b><span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
Introduction: </span></b><span style="font-family: "arial" , sans-serif; font-size: 10pt;">Stack is an abstract data type. It serves as a collection of
elements and follow LIFO(last in first out) pattern. So every new added item
goes on the top of the stack, and only top item can be removed first.<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> It has main 2 operations<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> <b>push</b>: This operation adds an element to
the collection at the top<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> <b>pop</b>: It removes the most recently added
element that was not yet removed.<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">using System;<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">using System.Collections.Generic;<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">using System.Linq;<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">using System.Text;<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">using System.Threading.Tasks;<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">namespace Stack<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">{<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public interface
IStack<T><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> void
Push(T element);<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> T
Pop();<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> void
Print();<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public class
Stack<T> : IStack<T><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> private
T[] _items = new T[10] ;<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> private
int _top = -1;<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public
void Push(T element)<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
if (_top < 9)<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
{<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
_items[++_top] = element;<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
}<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
else<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
{<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
throw new Exception("Stack is full. Item can't be
added.");<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
}<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public
void Print()<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
for (int i = _top; i > -1; i--)<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
{<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
Console.WriteLine("index:{0} item:{1}",i,_items[i]);<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
}<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public
T Pop()<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
if (_top == -1)<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
{<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
throw new Exception("Stack is empty.");<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
}<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
return _items[_top--];<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<br /></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public class Program<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public
static void Main(string[] args)<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
var stack = new Stack<int>();<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
stack.Push(110);<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
stack.Push(101);<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
stack.Push(111);<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
stack.Print();<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
var item = stack.Pop();<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
Console.WriteLine("Poped item :: {0}",item);<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
stack.Print();<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
stack.Push(200);<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
stack.Print();<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
Console.ReadKey();<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> } <o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
}<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
<b>Complexity Analysis</b><o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<b><span style="font-family: "arial" , sans-serif; font-size: 10pt;">
<span class="apple-converted-space"> </span></span></b><span style="font-family: "arial" , sans-serif; font-size: 10pt;">push,pop: O(1)<b> </b>&
search: O(n)<o:p></o:p></span></div>
<div style="margin-bottom: .0001pt; margin: 0in;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> <o:p></o:p></span></div>
<br />
<div class="MsoNormal">
<br /></div>
</div>
<a data-pin-do="buttonBookmark" data-pin-round="true" data-pin-save="false" href="https://www.pinterest.com/pin/create/button/"><img src="//assets.pinterest.com/images/pidgets/pinit_fg_en_round_red_16.png" /></a>
<script async defer src="//assets.pinterest.com/js/pinit.js"></script>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-55196200769523002712017-02-18T11:33:00.003-08:002017-02-18T20:18:41.057-08:00Queue Data Structure<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
<div style="text-align: left;">
<b><span style="font-family: "arial" , sans-serif; font-size: 10pt;"> Introduction</span></b><span style="font-family: "arial" , sans-serif; font-size: 10pt;">: Queue is an abstract data type.
It serves as a collection of elements and follow FIFO (First in first out)
pattern. So first element added to the queue will be the first one to be
removed.</span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> It has main 2 operations<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> <b>Enqueue</b>: This operation adds
an element to the queue <o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> <b>Dequeue</b>: It removes the
item from the beginning of the queue.<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
<br />
<br />
using System;<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
namespace DataStructure<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">{<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public interface IQueue<T><o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> void Enqueue(T item);<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> T Dequeue();<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
void Print();<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
public class Queue<T> : IQueue<T><o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> T[] _items = new T[10];<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> int _rear=-1;<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> int _front =-1;<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> <o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
public void Enqueue(T item)<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> if (_rear == 9)<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
Console.WriteLine("queue overflow.");<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> else<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> if (_front
== -1) _front++;<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
_items[++_rear] = item;<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
public T Dequeue()<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> if (_front == -1 ||
_front > _rear)<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
Console.WriteLine("Queue underflow.");<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> throw new
Exception("Queue underflow");<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> else<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> return
_items[_front++];<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"><br />
public void Print()<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> if(_front==-1)<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
Console.WriteLine("queue is empty");<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> else<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> for (int i
= _front; i <= _rear; i++)<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
Console.WriteLine("Item {0}",_items[i]);<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public class Program<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> public static void Main(string[] args)<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> {<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> var queue = new
Queue<int>();<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> queue.Enqueue(100);<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> queue.Enqueue(101);<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> queue.Enqueue(150);<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> queue.Print();<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">
Console.WriteLine("item dequeue:{0}", queue.Dequeue());<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> queue.Print();<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> queue.Enqueue(200);<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> queue.Print();<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> Console.ReadKey();<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;"> }<o:p></o:p></span></div>
<div style="margin: 0in 0in 0.0001pt;">
<span style="font-family: "arial" , sans-serif; font-size: 10pt;">}<o:p></o:p></span></div>
<br />
<div class="MsoNormal">
<br /></div>
</div>
</div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-83289600507293692662014-05-22T10:54:00.005-07:002021-05-31T08:40:22.185-07:00C# Lazy Initialization or Instantiation<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
</div>
<h3 style="text-align: left;">
<span style="font-family: "arial" , "helvetica" , sans-serif;">Introduction:<span class="Apple-style-span" style="font-family: "verdana" , sans-serif; font-size: small; font-weight: normal;"> </span></span></h3>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;">Sometime we want to defer or delay the initialization of the resource intensive or large object in case if it is not required at the moment to improve the performance or response time of the application.</span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;">Microsoft C# 4.0 introduced new feature Lazy<T> to achieve the above behavior. </span></div>
<div style="text-align: left;">
<span style="font-family: "verdana" , sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Lazy<T> defers or delay the creation of a large or resource-intensive object, or the execution of a resource-intensive task. It creates the instance of the object when it is first time used or called in the application.</span></span></div>
<div style="text-align: left;">
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<h3 style="text-align: left;">
<span style="color: #2a2a2a; font-family: "arial" , "helvetica" , sans-serif;"><span style="line-height: 18px;">Lazy<T> Properties:</span></span></h3>
<div style="text-align: left;">
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div style="text-align: left;">
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">It has 2 properties</span></span></div>
<ul>
<li style="line-height: 18px;"><span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><i><b>IsValueCreated</b></i>: It is boolean type property which return true if object is instanciated and false if not.</span></li>
</ul>
<ul>
<li style="line-height: 18px;"><span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><b><i>Value</i></b>: It returns the object of type T.</span></li>
</ul>
<br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Now I am going to create one sample application to demonstrate how to use it.</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Step 1. Create one C# Console LazyInitialization application.</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Step 2. Open the Program file and add below 2 classes inside the same namespace.</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<br />
<div>
<span class="Apple-style-span" style="font-family: "verdana" , sans-serif;"> public class Order</span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"></span></span><br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> {</span></span><br />
<span class="Apple-style-span" style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"> public Order()</span></span><br />
<span class="Apple-style-span" style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"> {</span></span><br />
<span class="Apple-style-span" style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"> this.OrderId=1234;</span></span><br />
<span class="Apple-style-span" style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"> this.DeliveryDate = DateTime.Today;</span></span><br />
<span class="Apple-style-span" style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"> this.OrderCreationDate = DateTime.Today.AddDays(-2);</span></span><br />
<span class="Apple-style-span" style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span class="Apple-style-span" style="line-height: 18px;"> }</span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
</span></span>
<br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> public int OrderId { get; set; }</span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
</span></span>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"></span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"></span></span><br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> public DateTime DeliveryDate { get; set; } </span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
</span></span>
<br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> public DateTime OrderCreationDate { get; set; }</span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
</span></span>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> </span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
<div>
}</div>
<div>
public class Customer</div>
<div>
{</div>
<div>
public string FirstName { get; set; }</div>
<div>
public string LastName { get; set; }</div>
<div>
public Lazy<Order> OrderInformation { get; set; }</div>
<div>
}</div>
</span></span></div>
<br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Customer class has an aggregation with Order. </span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Initialization of the Order object will be deferred and it will only get initialized when it will be demanded first time in the application.</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Now update the main method as shown below</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<br />
<div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> static void Main(string[] args)</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> {</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Customer customer = new Customer();</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> customer.FirstName = "Joe";</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> customer.LastName = "Mackenzy"; </span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> customer.OrderInformation = new Lazy<Order>(); </span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Console.WriteLine("Customer Name:{0}", customer.FirstName + " " + customer.LastName);</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Console.WriteLine("Customer's Order isCreated: {0}", customer.OrderInformation.IsValueCreated);</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> var customerOrder = customer.OrderInformation.Value;</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Console.WriteLine("Customer's Order isCreated: {0}", customer.OrderInformation.IsValueCreated);</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Console.WriteLine("Customer's Order ID: {0} Delivery Date: {1}", customerOrder.OrderId, customerOrder.DeliveryDate);</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Console.Read();</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> }</span></span></div>
</div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"></span></span><br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
</span></span>
<br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">it will output as below</span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
</span></span>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"></span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"></span></span><br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
</span></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAXpGPfGbtXTvqSnBMTecZWYnFj_GmzAda_Lzxv_iTH7f_GRAQIsOE9O-poWiGTU2YYXnMtfXvExfPMF-7MmAKN-REUrhxmglOUvK-1iecaeh0zkE-zjeBSxXwNuyoYZVSHpd3vUJqJhCq/s1600/LazyInitialization.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="162" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAXpGPfGbtXTvqSnBMTecZWYnFj_GmzAda_Lzxv_iTH7f_GRAQIsOE9O-poWiGTU2YYXnMtfXvExfPMF-7MmAKN-REUrhxmglOUvK-1iecaeh0zkE-zjeBSxXwNuyoYZVSHpd3vUJqJhCq/s1600/LazyInitialization.jpg" width="320" /></a></span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
</span></span>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">
</span></span></div>
<br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Primitive DataType:</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Below I am going to illustrate for int data type.</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> static void Main(string[] args)</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> {</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> int z = 0;</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> </span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Lazy<int> lazyint = new Lazy<int>(() => { z = 10; return z; });</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Console.WriteLine(string.Format("Value of z: {0}", z));</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> var zValue = lazyint.Value;</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Console.WriteLine(string.Format("Value of z: {0}", zValue));</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> Console.Read();</span></span><br />
<span style="line-height: 18px;"><span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"></span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"> }</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">In the above program z is an integer type variable with value 0. </span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">now z is initialized with Lazy object and inside anonymous method value of z is set to 10 which is a parameter of Lazy constructor.</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">so value of z is set to 10 after referring Value property of lazyint when it is being actually used. </span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Output:</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Value of z: 0</span></span><br />
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;">Value of z: 10.</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #741b47; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><i>Note: Refer MSDN for multithread usage.</i></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
<br />
<br />
<div>
<span style="color: #2a2a2a; font-family: "verdana" , sans-serif;"><span style="line-height: 18px;"><br /></span></span></div>
</div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-34194096564198965142014-05-10T04:55:00.000-07:002014-05-13T21:07:43.543-07:00Managed Extensibility Framework Step by Step<div dir="ltr" style="text-align: left;" trbidi="on">
<h3 style="text-align: left;">
<span class="goog-text-highlight" style="font-family: Verdana, sans-serif; font-size: small;"><i>Introduction:</i></span></h3>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;">As we know MEF is Microsoft Extensibility Framework. It helps in developing loosely coupled, extensible applications. So it leverage to plug in components in already developed application. I am not going to discuss much about the theoretical discussion rather step by step guide to how to use this framework in a sample application.</span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;"><span style="color: #a64d79;"><i>MEF works on OPEN-CLOSED Principle </i></span><i>of the SOLID principles which is as below</i></span></div>
<div style="text-align: left;">
<span style="color: #a64d79; font-family: Verdana, sans-serif;"><i><br /></i></span></div>
<div style="text-align: left;">
<i><span style="font-family: Verdana, sans-serif;"><span style="color: #a64d79;">Module should be closed for modification but open for extension.</span></span></i></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;"><b><i>MEF basic terminology</i></b>:</span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;">1. <b>Catalog</b> : contain components those are to be plugged-in </span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;">2. <b>Exports</b>: These are contracts or plug-in which can be composed in the application</span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;">3. <b>Imports</b>: These are properties or socket where components can be plugged-in.</span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;">4. <b>Composition</b>: it composes all together.</span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><b><i>Application Brief:</i></b></span><br />
<span style="font-family: Verdana, sans-serif;"><br />It is a Movie Search Windows Application and Form will have design as shown below. Initially it can search only English Comedy movies and later we will add more components to search the Adventure and Drama movies as well.</span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><b><i>Steps:</i></b></span><br />
<span style="font-family: Verdana, sans-serif;"><br />Step 1. Create a Window Application and named it MovieSearchApplication.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div>
<span style="font-family: Verdana, sans-serif;">Step 2. Add one label with text property as "Enter movie title" and textbox to enter Title of the movie and radio buttons to select movie categories and richtexbox to display the movie details as shown below. Add one button and enter text property as <b>Search</b>.</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYWWvYUkgcdtzdxs_Ic7GbWJySyJ6f53eA7R0ezrIY9_JFUIzNwZdtEEn0ou3h2DeTDJRr0GzOUJtG6A-OdzKXeO8_pTz0WTHYIIA3XDUDyyI7sImyaWmrG_Gm8G3QXXA0rEWvWzisvDF2/s1600/Form.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYWWvYUkgcdtzdxs_Ic7GbWJySyJ6f53eA7R0ezrIY9_JFUIzNwZdtEEn0ou3h2DeTDJRr0GzOUJtG6A-OdzKXeO8_pTz0WTHYIIA3XDUDyyI7sImyaWmrG_Gm8G3QXXA0rEWvWzisvDF2/s1600/Form.jpg" height="241" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both;">
<span style="font-family: Verdana, sans-serif;">Step 3. Add one Class Library project and named it MovieDetailContract.</span></div>
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Step 4. Delete class1.cs file and another class file and named it as IMovie.cs and paste the below content.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Open the IMovie.cs file and add one Interface IMovie</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> public interface IMovie</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> IList<Movie> GetMovies(string movieTitle); </span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">and a class Movie as below</span><br />
<span style="font-family: Verdana, sans-serif;"> public class Movie</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> public string MovieID { get; set; }</span><br />
<span style="font-family: Verdana, sans-serif;"> public string Title { get; set; }</span><br />
<span style="font-family: Verdana, sans-serif;"> public string Director { get; set; }</span><br />
<span style="font-family: Verdana, sans-serif;"> public DateTime ReleaseDate { get; set; }</span><br />
<span style="font-family: Verdana, sans-serif;"> public double Price { get; set; } </span><br />
<span style="font-family: Verdana, sans-serif;"> </span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div>
<span style="font-family: Verdana, sans-serif;">step 5. Compile the project and add its reference in MovieApplication Project.</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">step 6. Add another project class library project and named it as ComedyMovieComponent in the solution.</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">step 7. Add EnglishComedy.cs file and delete class1.cs file</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">Step 8. Add reference of <b>MovieDetailContract </b>assembly.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">step 9. Add reference of <b>System.Component.Composition</b> assembly.</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">Step 10. Open EnglishComedy.cs file and type as below</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;">using System;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">using System.Collections.Generic;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">using System.ComponentModel.Composition;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">using System.Linq;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">using System.Text;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">using System.Threading.Tasks;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">using MovieDetailContract;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">namespace ComedyMovieComponent</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">{</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> [Export(typeof(IMovie))]</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> [ExportMetadata("MovieCategory", "EnglishComedy")]</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> public class EnglishComedy : IMovie</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> {</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> private ICollection<Movie> MovieList()</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> {</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> List<Movie> movies = new List<Movie>();</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> Movie comedymovie = new Movie() { MovieID = "CM1001", Title = "Sister Act", Price = 450.00 };</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> comedymovie = new Movie() { MovieID = "CM1011", Title = "Brazil", Price = 250.00 };</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> comedymovie = new Movie() { MovieID = "CM1010", Title = "Midnight Run", Price = 150.00 };</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> comedymovie = new Movie() { MovieID = "CM1101", Title = "Galaxy Quest", Price = 550.00 };</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> comedymovie = new Movie() { MovieID = "CM1401", Title = "A Fish called Wanda", Price = 450.00 };</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> return movies;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> }</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> public IList<Movie> GetMovies(string movieTitle)</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> {</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> </span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> List<Movie> movies = MovieList() as List<Movie>;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> var searchedmovies = movies.Where(m => m.Title.Contains(movieTitle)) ;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> List<Movie> movieList = searchedmovies.ToList<Movie>();</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> return movieList;</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> }</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"> }</span></div>
<div>
<span style="font-family: Verdana, sans-serif;">}</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">You can see <b>EnglishComedy</b> class is decorated with <b>Export</b> attribute which help to plug the component in the MovieApplication socket while <b>ExportMetadata </b>attribute will help to dynamically finding the required component and using it for expected operation.</span><br />
<span style="font-family: Verdana, sans-serif;"><br />Step 11. Add a folder <b>Components </b>in the MovieApplication.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Step 12. Copy <b>ComedyMovieComponent </b>assembly in Components folder.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Step 13. Open Form1.cs file and add below code</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> [ImportMany] </span><br />
<span style="font-family: Verdana, sans-serif;">private Lazy<IMovie, IDictionary<string, object>>[] movies { get; set; }</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">//This is the socket in the application where plug-in ComedyMovieComponent will fit-in. </span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">private CompositionContainer _container;</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Step 14. Add below method to create the catalog of the components. </span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> private void InitializeParts()</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> var catalog = new AggregateCatalog();</span><br />
<span style="font-family: Verdana, sans-serif;"> catalog.Catalogs.Add(new DirectoryCatalog(@"D:\MEF\Mobile\MovieApplication\Components"));</span><br />
<span style="font-family: Verdana, sans-serif;"> _container = new CompositionContainer(catalog);</span><br />
<span style="font-family: Verdana, sans-serif;"> this._container.ComposeParts(this);</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;">reference this method in form1 constructor as below</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> public Form1() </span><br />
<span style="font-family: Verdana, sans-serif;">{ </span><br />
<span style="font-family: Verdana, sans-serif;"> InitializeComponent (); </span><br />
<span style="font-family: Verdana, sans-serif;"> InitializeParts(); </span><br />
<span style="font-family: Verdana, sans-serif;">}</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Step 15. Now add below on click event of Search button </span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">private void button1_Click(object sender, EventArgs e) </span><br />
<span style="font-family: Verdana, sans-serif;">{ </span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> RadioButton categorybutton = groupBox1.Controls.OfType<RadioButton>().FirstOrDefault(r => r.Checked);</span><br />
<span style="font-family: Verdana, sans-serif;"> string movieCategory = categorybutton.Text.Trim().Replace(" ", "").ToUpper(); </span><br />
<span style="font-family: Verdana, sans-serif;"> string title = textBox1.Text.Trim();</span><br />
<span style="font-family: Verdana, sans-serif;"> bool isMovieFound = false;</span><br />
<span style="font-family: Verdana, sans-serif;"> foreach (Lazy<IMovie, IDictionary<string, object>> movie in movies)</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> string componentMovieCategory = movie.Metadata["MovieCategory"].ToString().ToUpper();</span><br />
<span style="font-family: Verdana, sans-serif;"> if (componentMovieCategory == movieCategory)</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> </span><br />
<span style="font-family: Verdana, sans-serif;"> List<Movie> searchedMovies = movie.Value.GetMovies(title).ToList();</span><br />
<span style="font-family: Verdana, sans-serif;"> StringBuilder movieString = new StringBuilder();</span><br />
<span style="font-family: Verdana, sans-serif;"> if (searchedMovies != null && searchedMovies.Count > 0)</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> isMovieFound = true;</span><br />
<span style="font-family: Verdana, sans-serif;"> foreach (var searchedMovie in searchedMovies)</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> movieString.AppendFormat("MovieID: {0}", searchedMovie.MovieID);</span><br />
<span style="font-family: Verdana, sans-serif;"> movieString.AppendFormat("{1}Movie Title: {0}{1} Movie Price: {2}", searchedMovie.Title, Environment.NewLine, searchedMovie.Price);</span><br />
<span style="font-family: Verdana, sans-serif;"> movieString.AppendFormat("{0}====================================={0}",Environment.NewLine);</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"> richTextBox1.Text = movieString.ToString();</span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"> </span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"> if (!isMovieFound)</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> MessageBox.Show("Movie / Category is not available");</span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">}</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Now run the application</span><br />
<span style="font-family: Verdana, sans-serif;">1. Enter movie title as Braz</span><br />
<span style="font-family: Verdana, sans-serif;">2. Select English Comedy radio button </span><br />
<span style="font-family: Verdana, sans-serif;">3. Click on the search button</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">output will come like belowAs</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxEsJpX9pgR5fVF1-XaxxxGCqE-Jzl3CiMGWHmLj_CxTPCrSSyNTTZy4IgJYLXjY0IyEsEKP6AtmxWrmrAGHNouoZONDq0EQCHwUbCfb6PJMTws_tetnUWCiIw7kTmKEHboOQugjj49cZf/s1600/Output.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"><span style="font-family: Verdana, sans-serif;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxEsJpX9pgR5fVF1-XaxxxGCqE-Jzl3CiMGWHmLj_CxTPCrSSyNTTZy4IgJYLXjY0IyEsEKP6AtmxWrmrAGHNouoZONDq0EQCHwUbCfb6PJMTws_tetnUWCiIw7kTmKEHboOQugjj49cZf/s1600/Output.jpg" height="241" width="320" /></span></a><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">Now select <b>English Adventure</b> category and click on the Search button</span><br />
<span style="font-family: Verdana, sans-serif;"><b><i>Selected Movie/Category is not available </i></b>message will prompt you.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif; margin-left: 1em; margin-right: 1em;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhykdk8-tY5yjQM-5PKAYcr4bBJYTvlbYS0cLH_YbD01Tf_ibFQMq4wwRHfCAFNSkNW25YT9p3weh12EbOXgqfAGWS9mwSxU6vPGky9UBv3ddvPI0-xk9ShGLRqvJC2bb6Wr3kQgT-ohntR/s1600/NotAvailOutput.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhykdk8-tY5yjQM-5PKAYcr4bBJYTvlbYS0cLH_YbD01Tf_ibFQMq4wwRHfCAFNSkNW25YT9p3weh12EbOXgqfAGWS9mwSxU6vPGky9UBv3ddvPI0-xk9ShGLRqvJC2bb6Wr3kQgT-ohntR/s1600/NotAvailOutput.jpg" height="214" width="320" /></a></span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<h3 style="clear: both; text-align: left;">
<span style="font-family: Arial, Helvetica, sans-serif;"><i>English Adventure Component Development:</i></span></h3>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Verdana, sans-serif;">Now we will create English Adventure movies component and will add this to components directory of UI and this will start working.</span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Verdana, sans-serif;">Step 1. Add another class Library EnglishAdventureComponent in the solution</span></div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;">Step 2. Delete class1.cs and add EnglishAdventure class.</span><br />
<span style="font-family: Verdana, sans-serif;">Step 3. Add reference of <b>MovieDetailContract </b>assembly.</span><br />
<div>
<span style="font-family: Verdana, sans-serif;">Step 4. Add reference of <b>System.Component.Composition</b> assembly.</span><br />
<span style="font-family: Verdana, sans-serif;">Step 5. Open the EnglishAdventure class file and add below code</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">using System;</span><br />
<span style="font-family: Verdana, sans-serif;">using System.Collections.Generic;</span><br />
<span style="font-family: Verdana, sans-serif;">using System.ComponentModel.Composition;</span><br />
<span style="font-family: Verdana, sans-serif;">using System.Linq;</span><br />
<span style="font-family: Verdana, sans-serif;">using System.Text;</span><br />
<span style="font-family: Verdana, sans-serif;">using System.Threading.Tasks;</span><br />
<span style="font-family: Verdana, sans-serif;">using MovieDetailContract;</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;">namespace EnglishAdventureComponent</span><br />
<span style="font-family: Verdana, sans-serif;">{</span><br />
<span style="font-family: Verdana, sans-serif;"> [Export(typeof(IMovie))]</span><br />
<span style="font-family: Verdana, sans-serif;"> [ExportMetadata("MovieCategory", "EnglishAdventure")]</span><br />
<span style="font-family: Verdana, sans-serif;"> public class EnglishAdventure:IMovie</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> private ICollection<Movie> MovieList()</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> List<Movie> movies = new List<Movie>();</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> Movie comedymovie = new Movie() { MovieID = "CM1001", Title = "SpiderMan 2", Price = 450.00 };</span><br />
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span><br />
<span style="font-family: Verdana, sans-serif;"> comedymovie = new Movie() { MovieID = "CM1011", Title = "SpiderMan", Price = 250.00 };</span><br />
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span><br />
<span style="font-family: Verdana, sans-serif;"> comedymovie = new Movie() { MovieID = "CM1010", Title = "XMan", Price = 150.00 };</span><br />
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span><br />
<span style="font-family: Verdana, sans-serif;"> comedymovie = new Movie() { MovieID = "CM1101", Title = "Avatar", Price = 550.00 };</span><br />
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span><br />
<span style="font-family: Verdana, sans-serif;"> comedymovie = new Movie() { MovieID = "CM1401", Title = "Star Wars 1", Price = 450.00 };</span><br />
<span style="font-family: Verdana, sans-serif;"> movies.Add(comedymovie);</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> return movies;</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> public IList<Movie> GetMovies(string movieTitle)</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> List<Movie> movies = MovieList() as List<Movie>;</span><br />
<span style="font-family: Verdana, sans-serif;"> var searchedmovies = movies.Where(m => m.Title.Contains(movieTitle));</span><br />
<span style="font-family: Verdana, sans-serif;"> List<Movie> movieList = searchedmovies.ToList<Movie>();</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span><span style="font-family: Verdana, sans-serif;"> return movieList;</span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<br />
<span style="font-family: Verdana, sans-serif;">}</span></div>
<div>
<span style="font-family: Verdana, sans-serif;"><br /></span></div>
</div>
<div style="text-align: left;">
<span style="font-family: Verdana, sans-serif;">Step 6. Compile the project and copy the assembly from debug / bin directory and paste in the components folder of the MovieApplication.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_xf9n5y-CiikLoVpw9B7xqQ4s592ug7ottjPdLPEJg-OzSGJXMbhX461YM7ZoO2fM07YA9N3GiDviO9eZrGFKWaYIqGN3p59NAiUezw2SzQL4MbUhrfyiZA3w9kad6VUH-bgwOE8JOC6s/s1600/Output2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_xf9n5y-CiikLoVpw9B7xqQ4s592ug7ottjPdLPEJg-OzSGJXMbhX461YM7ZoO2fM07YA9N3GiDviO9eZrGFKWaYIqGN3p59NAiUezw2SzQL4MbUhrfyiZA3w9kad6VUH-bgwOE8JOC6s/s1600/Output2.jpg" height="233" width="320" /></span></a></div>
<span style="font-family: Verdana, sans-serif;">Now I am leaving the implementation of English Drama component for you. Please email me in case of issues.</span></div>
</div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-23114861088116067222014-04-14T04:17:00.005-07:002014-04-19T03:17:28.552-07:00Asp.Net MVC 4.0 multiple images or files upload application<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Verdana, sans-serif;">In my previous article I have written step by step how to upload image or file. But only one image / file only can be uploaded at one time.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Here I am going to illustrate with sample application how to upload multiple images or files.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><b>Step 1.</b> Add one model class FileUpload as shown below</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"> public class FileUpload</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> public string FileName { get; set; }</span><br />
<span style="font-family: Verdana, sans-serif;"> public string Location { get; set; }</span><br />
<span style="font-family: Verdana, sans-serif;"> public HttpPostedFileBase File{ get; set; }</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><b>Step 2</b>. Add one controller FileUploadController with read write option.</span><br />
<br />
<span style="font-family: Verdana, sans-serif;">[HttpPost]</span><br />
<span style="font-family: Verdana, sans-serif;"> public ActionResult Create(FormCollection collection)</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> HttpFileCollectionBase files = HttpContext.Request.Files;</span><br />
<span style="font-family: Verdana, sans-serif;"> int fileCount = files.Count;</span><br />
<span style="font-family: Verdana, sans-serif;"> try</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> for (int index = 0; index < fileCount; index++)</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> HttpPostedFileBase file = files.Get(index);</span><br />
<span style="font-family: Verdana, sans-serif;"> file.SaveAs("D:\\Test" + file.FileName.Substring(file.FileName.LastIndexOf("\\"),(file.FileName.Length-file.FileName.LastIndexOf("\\"))));</span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"> return RedirectToAction("Index");</span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"> catch(Exception ex)</span><br />
<span style="font-family: Verdana, sans-serif;"> {</span><br />
<span style="font-family: Verdana, sans-serif;"> return View(ex.Message);</span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"> }</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><b>Step 3.</b> Add view to the Create Get method in controller by right click and select add view. Select strongly type view and select or type complete path of model FileUpload class. Type the below code in view </span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">@using (Html.BeginForm("Create", "FileUpload", FormMethod.Post, new { enctype="multipart/form-data"}))</span><br />
<span style="font-family: Verdana, sans-serif;">{</span><br />
<span style="font-family: Verdana, sans-serif;"> <div class="editor-field"></span><br />
<span style="font-family: Verdana, sans-serif;"> @Html.TextBoxFor(model => model.File, new { type = "file", Multiple = "Multiple" })</span><br />
<span style="font-family: Verdana, sans-serif;"> </span><br />
<span style="font-family: Verdana, sans-serif;"> </div></span><br />
<span style="font-family: Verdana, sans-serif;"> <div class="editor-field"></span><br />
<span style="font-family: Verdana, sans-serif;"> @Html.TextBoxFor(model => model.File, new { type = "file", Multiple = "Multiple" })</span><br />
<span style="font-family: Verdana, sans-serif;"> </span><br />
<span style="font-family: Verdana, sans-serif;"> </div></span><br />
<span style="font-family: Verdana, sans-serif;"> <div class="editor-field"></span><br />
<span style="font-family: Verdana, sans-serif;"> @Html.TextBoxFor(model => model.File, new { type = "file", Multiple = "Multiple" })</span><br />
<span style="font-family: Verdana, sans-serif;"> </span><br />
<span style="font-family: Verdana, sans-serif;"> </div></span><br />
<span style="font-family: Verdana, sans-serif;"> <p></span><br />
<span style="font-family: Verdana, sans-serif;"> <input type="submit" value="Create" /></span><br />
<span style="font-family: Verdana, sans-serif;"> </p></span><br />
<span style="font-family: Verdana, sans-serif;">}</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><b>Step 4</b>. Create D:\\Test folder.Give permission and remove read only attribute.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">Now run and select and save the files.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
</div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-79948332828106713642014-04-12T23:55:00.000-07:002014-04-13T00:19:32.062-07:00CoVariance and ContraVariance in CSharp<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Verdana, sans-serif; font-size: small;">I am going to discuss about the Variance in csharp. But before that we have to know about some keyword</span><br />
<br />
<span style="font-family: Verdana, sans-serif; font-size: small;"><b>Subtyping:</b> is a polymorphism rule in programming language which refers to how 2 complex types A (subtype or more specific type) can substitute or can be used where B(super type or generic type) is required.</span><br />
<span style="font-family: Verdana, sans-serif; font-size: small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: small;"><b>Variance: </b>refers to how subtyping between components of A and B are related depending on the subtyping relations between A and B.</span><br />
<span style="font-family: Verdana, sans-serif; font-size: small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: small;"><b>Covariant</b>: A is subtype of B. Then A can be used where B is required.<br /><b>Contravariant</b>: Reverse of above.<br /><b>Bivariant:</b> Both covariant and contravariant is applicable.<br /><b>Invariant:</b> None of the above</span><br />
<br />
<span style="font-family: Verdana, sans-serif; font-size: small;">In this content I am going to discuss how Delegates uses co- and contraVariant.</span><br />
<br />
<span style="font-family: Verdana, sans-serif; font-size: small;"><b>Contravariant Delegates Arguments</b>:</span><br />
<span style="font-family: Verdana, sans-serif; font-size: small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: small;">FamilyCar <: Car (FamilyCar is a derived class of Car.)</span><br />
<span style="font-family: Verdana, sans-serif; font-size: small;"><br />In the below example delegate CardetailDelegate expects an argument of type FamilyCar but it is assigned to a method with base class argument Car.</span><br />
<br />
<span style="font-family: Verdana, sans-serif; font-size: small;"><br />using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using System.Threading.Tasks;<br /><br />namespace Variance<br />{<br /> class Program<br /> {<br /> delegate string CardetailDelegate(FamilyCar car);<br /> static void Main(string[] args)<br /> {<br /> FamilyCar fmCar = new FamilyCar();<br /> fmCar.EnginePower = "80";<br /> fmCar.EngineDisplacement = "1300";<br /> fmCar.Color = "RED";<br /> fmCar.Length = 4;<br /> fmCar.Price = 350000;<br /> fmCar.SeatingCapacity = 5; <br /><br /> CardetailDelegate cardetaildel = CarDetail; //delegate is assigned to a method with base class argument Car<br /><br /> Console.WriteLine(cardetaildel(fmCar));<br /> Console.Read();<br /> }<br /> static string CarDetail(Car car)<br /> { <br /> <br /> return string.Format("I am a car with {0} BHP power and {1} cc displacement. I am {2} mt in length and {3} in color. {4} passengers can sit together.", car.EnginePower, <br /><br />car.EngineDisplacement, car.Length, car.Color, car.SeatingCapacity);<br /> <br /> <br /> }<br /> }<br />}<br /><br />public class Car<br />{<br /> public string Color { get; set; }<br /> public virtual string EnginePower { get; set; }<br /> public virtual string EngineDisplacement { get; set; }<br /> public virtual int SeatingCapacity { get; set; }<br /> public int Length { get; set; }<br /> public bool AC { get; set; }<br /> public decimal Price { get; set; }<br /><br /> <br /><br />}<br /><br /><br />public class FamilyCar : Car<br />{<br /> string enginePower;<br /> string engineDisplacement;<br /> int seatingCapacity;<br /><br /> public override string EnginePower<br /> {<br /> get<br /> {<br /> return enginePower;<br /> }<br /> set<br /> {<br /> enginePower = value;<br /> }<br /> }<br /><br /> public override string EngineDisplacement<br /> {<br /> get<br /> {<br /> return engineDisplacement;<br /> }<br /> set<br /> {<br /> engineDisplacement = value;<br /> }<br /> }<br /><br /> public override int SeatingCapacity<br /> {<br /> get<br /> {<br /> return seatingCapacity;<br /> }<br /> set<br /> {<br /> seatingCapacity = value;<br /> }<br /> }<br /><br /> <br />}<br /> </span><br />
<br />
<span style="font-family: Verdana, sans-serif; font-size: small;"><b>CoVariance delegates return type</b>:<br /><br />In the below example delegate NewCarDelegate returns type Car but it is assigned to a method with derived class return type FamilyCar.</span><br />
<br />
<br />
<span style="font-family: Verdana, sans-serif; font-size: small;">using System;<br />using System.Collections.Generic;<br />using System.Linq;<br />using System.Text;<br />using System.Threading.Tasks;<br /><br />namespace Variance<br />{<br /> class Program<br /> {<br /> <br /> <br /> delegate Car NewCarDelegate();<br /><br /><br /> static void Main(string[] args)<br /> {<br /> <br /><br /> <br /> NewCarDelegate newCar = GetNewCar; //contravariance GetNewCar return FamilyCar but NewCarDelegate has return type Car which base class of FamilyCar<br /> <br /> Console.WriteLine(CarDetail(newCar()));<br /><br /> Console.Read();<br /> }<br /> static string CarDetail(Car car)<br /> { <br /> return string.Format("I am a car with {0} BHP power and {1} cc displacement. I am {2} mt in length and {3} in color. {4} passengers can sit together.", car.EnginePower, <br /><br />car.EngineDisplacement, car.Length, car.Color, car.SeatingCapacity); <br /> <br /> }<br /><br /> static FamilyCar GetNewCar()<br /> {<br /> FamilyCar fmCar = new FamilyCar();<br /> fmCar.EnginePower = "180";<br /> fmCar.EngineDisplacement = "3000";<br /> fmCar.Color = "White";<br /> fmCar.Length = 6;<br /> fmCar.Price = 1500000;<br /> fmCar.SeatingCapacity = 5;<br /> return fmCar;<br /> }<br /> }<br />}<br /><br />public class Car<br />{<br /> public string Color { get; set; }<br /> public virtual string EnginePower { get; set; }<br /> public virtual string EngineDisplacement { get; set; }<br /> public virtual int SeatingCapacity { get; set; }<br /> public int Length { get; set; }<br /> public bool AC { get; set; }<br /> public decimal Price { get; set; }<br /><br /> <br /><br />}<br /><br /><br />public class FamilyCar : Car<br />{<br /> string enginePower;<br /> string engineDisplacement;<br /> int seatingCapacity;<br /><br /> public override string EnginePower<br /> {<br /> get<br /> {<br /> return enginePower;<br /> }<br /> set<br /> {<br /> enginePower = value;<br /> }<br /> }<br /><br /> public override string EngineDisplacement<br /> {<br /> get<br /> {<br /> return engineDisplacement;<br /> }<br /> set<br /> {<br /> engineDisplacement = value;<br /> }<br /> }<br /><br /> public override int SeatingCapacity<br /> {<br /> get<br /> {<br /> return seatingCapacity;<br /> }<br /> set<br /> {<br /> seatingCapacity = value;<br /> }<br /> } <br />} </span><br />
<span style="font-family: Verdana, sans-serif; font-size: small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: small;"><br /></span>
<span style="font-family: Verdana, sans-serif; font-size: small;">We will discuss more on this in coming blogs.</span></div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com1tag:blogger.com,1999:blog-9175879275864116066.post-21458059944403530742014-04-08T02:09:00.001-07:002014-04-14T04:06:06.002-07:00ASP.Net MVC 4 Image Upload Application Step by Step<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">I am going to develop an image upload application step by
step in Asp.Net MVC 4.0. It is sometimes required to upload image in application.</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">It is sample application and you can upload one image against an employee.</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 1. Open Visual
Studio and click on the File à
New Project. Select ASP.Net MVC 4.0 Web application as shown below.</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-7Ldx3AEwgeR03Y-XoixHdZBIVqKFH53UTWl1dCGYLXSOqy7e3V-8_icuZtW1ZJzk4pe2BfY5nP2ROQp307ano5imuJ5kTj7pWqSVhuTFri76qHTgQ5e2yZSrAGpSpsWqv6zap-zpVJsv/s1600/Step1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-7Ldx3AEwgeR03Y-XoixHdZBIVqKFH53UTWl1dCGYLXSOqy7e3V-8_icuZtW1ZJzk4pe2BfY5nP2ROQp307ano5imuJ5kTj7pWqSVhuTFri76qHTgQ5e2yZSrAGpSpsWqv6zap-zpVJsv/s1600/Step1.jpg" height="195" width="320" /></span></a></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 2. Give the
project name as <b>ImageUploadProject.<o:p></o:p></b></span></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 3. Select Internet Application template as shown below
and click on the OK button.</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm5q1_Pk0nH_HyujkR0qPA_qfQTl4qeXcNlEIXwiM52sAnalH0BReScoYtwcnU18LP7lp7lc9q218puMfy6WgsiWMJGAeso9KM8OHE4Fg5f2CIVV8XTu0bIp-uq28aP2_e1HE5fftTDb7Q/s1600/Step2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjm5q1_Pk0nH_HyujkR0qPA_qfQTl4qeXcNlEIXwiM52sAnalH0BReScoYtwcnU18LP7lp7lc9q218puMfy6WgsiWMJGAeso9KM8OHE4Fg5f2CIVV8XTu0bIp-uq28aP2_e1HE5fftTDb7Q/s1600/Step2.jpg" height="289" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 4. Run the
application you will see the below screen in the browser.</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu5uGHSr9oVPXC8870ef5YtXxStEjClDxA2NCQMdG_HZS2C13lsx8DDVRqE1xd5kTBicMFRME2hoPZLheYjWgS2Fg4TU9qhebnN8Zp6IzSOh28LWjtEqkVFvmTuDr2ODpqPKLydpl-zd3j/s1600/Step3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhu5uGHSr9oVPXC8870ef5YtXxStEjClDxA2NCQMdG_HZS2C13lsx8DDVRqE1xd5kTBicMFRME2hoPZLheYjWgS2Fg4TU9qhebnN8Zp6IzSOh28LWjtEqkVFvmTuDr2ODpqPKLydpl-zd3j/s1600/Step3.jpg" height="170" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 6. In the
SQL Server create Database EmployeeDB and table Employee as shown below.</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;">CREATE TABLE [dbo].[Employee](<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;"> [EmployeeID] [int] IDENTITY(1,1) NOT NULL,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;"> [FirstName] [nvarchar](50) NOT NULL,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;"> [LastName] [nvarchar](50) NOT NULL,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;"> [Address] [nvarchar](50) NULL,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;"> [ZipCode] [nvarchar](50) NULL,<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;"> CONSTRAINT
[PK_Employee] PRIMARY KEY
CLUSTERED <o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;">(<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;"> [EmployeeID] ASC<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;">)WITH
(PAD_INDEX
= OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS
= ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white; font-family: Verdana, sans-serif; font-size: x-small;">) ON [PRIMARY]<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both;">
</div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small; line-height: 115%;"><span style="background-color: white;">GO</span><o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="MsoNormal">
<!--[if gte vml 1]><v:roundrect id="_x0000_s1026" style='position:absolute;
margin-left:28.5pt;margin-top:23.15pt;width:383.25pt;height:246.75pt;
z-index:251658240' arcsize="10923f" fillcolor="#f79646 [3209]" strokecolor="#f2f2f2 [3041]"
strokeweight="3pt">
<v:shadow on="t" type="perspective" color="#974706 [1609]" opacity=".5"
offset="1pt" offset2="-1pt"/>
<v:textbox>
<![if !mso]>
<table cellpadding=0 cellspacing=0 width="100%">
<tr>
<td><![endif]>
<div>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
public class Employee<span style='mso-spacerun:yes'>
</span>{</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'> </span>public
int EmployeeID { get; set; }</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'>
</span>[Required]</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'>
</span>[StringLength(50)]</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'> </span>public
string FirstName { get; set; }</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'>
</span>[Required]</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'>
</span>[StringLength(50)]</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'> </span>public
string LastName { get; set; }</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'> </span>public
string Address { get; set; }</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'> </span>public
string ZipCode { get; set; } </p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'>
</span>[NotMapped]</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'> </span>public
HttpPostedFileBase Image { get; set; }</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'>
</span>[NotMapped]</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'>
</span>[Display(Name = "Image")]</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'> </span>public
string ImageFile { get; set; }</p>
<p class=MsoNormal style='margin-bottom:0cm;margin-bottom:.0001pt;
line-height:normal'>
<span style='mso-spacerun:yes'> </span><span
style='mso-spacerun:yes'> </span>}</p>
</div>
<![if !mso]></td>
</tr>
</table>
<![endif]></v:textbox>
</v:roundrect><![endif]--><!--[if !vml]--><span style="height: 341px; margin-left: 36px; margin-top: 28px; mso-ignore: vglayout; position: absolute; width: 521px; z-index: 251658240;">
</span><span style="height: 341px; margin-left: 36px; margin-top: 28px; mso-ignore: vglayout; position: absolute; width: 521px; z-index: 251658240;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></span><span style="height: 341px; margin-left: 36px; margin-top: 28px; mso-ignore: vglayout; position: absolute; width: 521px; z-index: 251658240;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></span><!--[endif]--><span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 7. Browse the solution and locate
Model folder. Add Employee class as shown below</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">public class Employee {</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> public int EmployeeID { get; set; }</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> [Required]</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> [StringLength(50)]</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> public string FirstName { get; set; }</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> [Required]</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> [StringLength(50)]</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> public string LastName { get; set; }</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> public string Address { get; set; }</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> public string ZipCode { get; set; }</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> [NotMapped]</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> public HttpPostedFileBase Image { get; set; }</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> [NotMapped]</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> [Display(Name = "Image")]</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> public string ImageFile { get; set; }</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> }</span><br />
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span>
<br />
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 8. Add
EmployeeDBContext class in the Model folder as shown below</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">public class
EmployeeDBContext:DbContext</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> {</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> public DbSet<Employee>
EmployeeCollection { get; set; }</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">
public EmployeeDBContext()</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> :
base("EmployeeConnection") {
}</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> protected override void
OnModelCreating(DbModelBuilder modelBuilder)</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> {</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">
modelBuilder.Entity<Employee>().Map(m =></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> {</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> m.MapInheritedProperties();</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">
m.ToTable("Employee");</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> }) </span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> .Property(m =>
m.EmployeeID).HasColumnName("EmployeeID").HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired();</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> }
</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> }</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 9. Add Employee Controller as
shown below</span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvwyC7ulnOb85i5MpyYEBijq1coq6iUkt22hmlp2Lmo5oPSlK23-gfUJHiR7_xIIkUj-QGOsNJbtsS4oi9qeygcFJzR4ZM5RgdzHY953WJX7YruuNmKdYRXlH8ihyphenhyphenFj9wJ2OQbPXLl1m0R/s1600/Step4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvwyC7ulnOb85i5MpyYEBijq1coq6iUkt22hmlp2Lmo5oPSlK23-gfUJHiR7_xIIkUj-QGOsNJbtsS4oi9qeygcFJzR4ZM5RgdzHY953WJX7YruuNmKdYRXlH8ihyphenhyphenFj9wJ2OQbPXLl1m0R/s1600/Step4.jpg" height="208" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 10. : Add the
below methods in the Employee Controller.</span></div>
<span style="font-family: Verdana, sans-serif; font-size: x-small;"> <span style="line-height: 115%;"> </span><span style="line-height: 115%;">public ActionResult Create()</span>
</span><br />
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> return View();<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> }<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> //<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> // POST: /Employee/Create<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> [HttpPost]<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> [ValidateAntiForgeryToken]<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> public ActionResult Create(Employee
empModel)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> try<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> { <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> using (EmployeeDBContext edb = new
EmployeeDBContext())<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">
edb.EmployeeCollection.Add(empModel);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> edb.SaveChanges();<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> PictureUpload(empModel);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> }<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> return
RedirectToAction("Index");<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> }<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> catch(Exception ex)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> return View();<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> }<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> }<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="line-height: 115%; mso-bidi-font-size: 9.5pt;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="line-height: 115%; mso-bidi-font-size: 9.5pt;">Step 11. </span>Right click on the Create method and select Add
View method.</span></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlvZjT4sYkiTUC4H_hWxkGSs_plrFoJrugkJEA_8qL4BXCMBP5hZ6zb8hi2xVT0SDXopatgQEQJG-yfN2d4FW56TwUeiDPpjigw7jbtKyJmZcbk5EvgQ0bKMb-wzSBzr3BXLS8_XELxLGD/s1600/image6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjlvZjT4sYkiTUC4H_hWxkGSs_plrFoJrugkJEA_8qL4BXCMBP5hZ6zb8hi2xVT0SDXopatgQEQJG-yfN2d4FW56TwUeiDPpjigw7jbtKyJmZcbk5EvgQ0bKMb-wzSBzr3BXLS8_XELxLGD/s1600/image6.jpg" height="315" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 12. Add the below tag to upload image
in case if not auto generated in create.cshtml file.</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;"><</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: maroon;">div</span><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: red;">class</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">="editor-field"></span><span style="background-color: white;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: yellow;">@</span><span style="background-color: white;">Html.TextBoxFor(model => model.Image, </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">new</span><span style="background-color: white;"> { type = </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #a31515;">"file"</span><span style="background-color: white;"> })<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: yellow;">@</span><span style="background-color: white;">Html.ValidationMessageFor(model => model.Image)<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white; line-height: 115%;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue; line-height: 115%;"></</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: maroon; line-height: 115%;">div</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue; line-height: 115%;">></span><span style="color: blue; line-height: 115%;"><o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 12. Add below 2 methods in the EmployeeController
class</span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">private</span><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">void</span><span style="background-color: white;"> PictureUpload(</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #2b91af;">Employee</span><span style="background-color: white;"> emp)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">if</span><span style="background-color: white;"> (emp.Image.ContentLength > 0)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">var</span><span style="background-color: white;"> filePath = Server.MapPath(</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #a31515;">@"/Content/Uploads"</span><span style="background-color: white;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">string</span><span style="background-color: white;"> savedFileName = </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #2b91af;">Path</span><span style="background-color: white;">.Combine(filePath, emp.EmployeeID.ToString()+</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #a31515;">".jpg"</span><span style="background-color: white;">);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">
emp.Image.SaveAs(savedFileName);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> }<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> }<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">private</span><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">void</span><span style="background-color: white;"> DownloadPetPicture(</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #2b91af;">IList</span><span style="background-color: white;"><</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #2b91af;">Employee</span><span style="background-color: white;">> empList)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">foreach</span><span style="background-color: white;"> (</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">var</span><span style="background-color: white;"> employee </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">in</span><span style="background-color: white;"> empList)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">var</span><span style="background-color: white;"> name = </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #a31515;">"/Content/Uploads/"</span><span style="background-color: white;">+employee.EmployeeID.ToString() +</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #a31515;">".jpg"</span><span style="background-color: white;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">var</span><span style="background-color: white;"> picture = @UrlHelper.GenerateContentUrl( name, </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">this</span><span style="background-color: white;">.HttpContext);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> employee.ImageFile = </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #a31515;">"<img src='"</span><span style="background-color: white;"> +
picture + </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #a31515;">"'></img>"</span><span style="background-color: white;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> }<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white; line-height: 115%;"> }</span><span style="line-height: 115%;"><o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="line-height: 115%;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 13. Update the Index
method as shown below<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">public</span><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #2b91af;">ActionResult</span><span style="background-color: white;"> Index()<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #2b91af;">List</span><span style="background-color: white;"><</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #2b91af;">Employee</span><span style="background-color: white;">> employeeCollection = </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">null</span><span style="background-color: white;">;<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">using</span><span style="background-color: white;"> (</span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #2b91af;">EmployeeDBContext</span><span style="background-color: white;"> emd = </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">new</span><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: #2b91af;">EmployeeDBContext</span><span style="background-color: white;">())<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> {<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> <o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> employeeCollection = emd.EmployeeCollection.ToList();<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">if</span><span style="background-color: white;"> (employeeCollection != </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">null</span><span style="background-color: white;">)<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">
DownloadPetPicture(employeeCollection);<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background-color: white;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"> }<o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white;"> </span><span style="background-color: white; background-position: initial initial; background-repeat: initial initial; color: blue;">return</span><span style="background-color: white;"> View(employeeCollection);<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><span style="background-color: white; line-height: 115%;"> }</span><span style="line-height: 115%;"><o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="line-height: 115%;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Step 14. Create one Uploads folder under Content folder in the solution. </span></span></div>
<div class="MsoNormal">
<span style="line-height: 115%;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">We can write code to auto generate the folder in case it is not available. But I have not coded that. </span></span><span style="font-family: Verdana, sans-serif; font-size: x-small; line-height: 115%;">Add strongly view
with index method as shown in previous steps. </span></div>
<div class="MsoNormal">
<span style="line-height: 115%;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Now build and type Employee/create
you will see the below screen<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="line-height: 115%;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhndq9eD8Mu-IHvsSPWt_HnTnN30JEv6A4cFv8aMg-OlmT5cBXfXpPYcywSGldGYuDZCMnhyIWkJ_uf0r5UpgDwICKtxdtSKjG3yUdU2_Qk9Fh-nNrKciUlBf_R_jlqKibFseC0xRyJVXCL/s1600/image7.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhndq9eD8Mu-IHvsSPWt_HnTnN30JEv6A4cFv8aMg-OlmT5cBXfXpPYcywSGldGYuDZCMnhyIWkJ_uf0r5UpgDwICKtxdtSKjG3yUdU2_Qk9Fh-nNrKciUlBf_R_jlqKibFseC0xRyJVXCL/s1600/image7.jpg" height="169" width="320" /></span></a></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="MsoNormal">
<span style="line-height: 115%;"><span style="font-family: Verdana, sans-serif; font-size: x-small;">Enter values and select
image it will take you the index(or List) view as shown below<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="line-height: 115%;"><span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<span style="font-family: Verdana, sans-serif; font-size: x-small; margin-left: 1em; margin-right: 1em;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVutGZqk_eJWEl0lpimsOYShd4BCmjp5SDYDLg1j1kNaAdLrJ6yFQ4NZ0TV4PPhH9KOfpF0EjVxSZtHH82nQcvRpVuC3L6oiZtkW_J0mlTpaR-CaP50z5omeI-JzkRTetsV0CMuD7NpDJ7/s1600/image8.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiVutGZqk_eJWEl0lpimsOYShd4BCmjp5SDYDLg1j1kNaAdLrJ6yFQ4NZ0TV4PPhH9KOfpF0EjVxSZtHH82nQcvRpVuC3L6oiZtkW_J0mlTpaR-CaP50z5omeI-JzkRTetsV0CMuD7NpDJ7/s1600/image8.jpg" height="171" width="320" /></a></span></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: .0001pt; margin-bottom: 0cm;">
<span style="font-family: Verdana, sans-serif; font-size: x-small;"><br /></span></div>
<div class="MsoNormal">
<br /></div>
<div>
<br /></div>
</div>
</div>
</div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0tag:blogger.com,1999:blog-9175879275864116066.post-5920885543855038072014-01-08T09:18:00.001-08:002021-05-31T08:41:03.250-07:00Entity Framework 5 new features<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 style="text-align: left;">
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-family: Arial, sans-serif; font-size: 18pt;">Some of the important features of Entity Framework 5.0 </span></b><b><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></b></div>
</h2>
<h3>
<span style="font-family: "Arial","sans-serif";">Introduction:<o:p></o:p></span></h3>
<h2>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-weight: normal;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">EF 5.0 can be used in Visual Studio 2010 and Visual Studio 2012. It is
used with .NET 4.0 and .NET 4.5. With .NET 4.5, this release introduces some
new features </span><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-weight: normal;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">
</span><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 72pt; text-indent: -18pt;">
<span style="font-weight: normal;"><span style="font-family: Wingdings; font-size: 10pt;">§</span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">Enum support:</span><span style="font-family: 'Times New Roman', serif; font-size: 18pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 72pt; text-indent: -18pt;">
<span style="font-weight: normal;"><span style="font-family: Wingdings; font-size: 10pt;">§</span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">Spatial Data Types </span><span style="font-family: 'Times New Roman', serif; font-size: 18pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 72pt; text-indent: -18pt;">
<span style="font-weight: normal;"><span style="font-family: Wingdings; font-size: 10pt;">§</span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">Performance Enhancement</span><span style="font-family: 'Times New Roman', serif; font-size: 18pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 108pt; text-indent: -18pt;">
<span style="font-weight: normal;"><span style="font-family: Wingdings; font-size: 10pt;">Ø</span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">Repeat Execution Time</span><span style="font-family: 'Times New Roman', serif; font-size: 18pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 108pt; text-indent: -18pt;">
<span style="font-weight: normal;"><span style="font-family: Wingdings; font-size: 10pt;">Ø</span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">automatic compilation</span><span style="font-family: 'Times New Roman', serif; font-size: 18pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 108pt; text-indent: -18pt;">
<span style="font-weight: normal;"><span style="font-family: Wingdings; font-size: 10pt;">Ø</span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">End to end performance</span><span style="font-family: 'Times New Roman', serif; font-size: 18pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 72pt; text-indent: -18pt;">
<span style="font-weight: normal;"><span style="font-family: Wingdings; font-size: 10pt;">§</span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">CF will detect if you have localDB available for creating new database</span><span style="font-family: 'Times New Roman', serif; font-size: 18pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 72pt; text-indent: -18pt;">
<span style="font-weight: normal;"><span style="font-family: Wingdings; font-size: 10pt;">§</span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">CF will add tables to existing db</span><span style="font-family: 'Times New Roman', serif; font-size: 18pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 72pt; text-indent: -18pt;">
<span style="font-weight: normal;"><span style="font-family: Wingdings; font-size: 10pt;">§</span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">Table Valued functions</span></span><b><span style="font-family: 'Times New Roman', serif; font-size: 18pt;"><o:p></o:p></span></b></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
</h2>
<h3>
<span style="font-family: "Arial","sans-serif";">Enum Support:<o:p></o:p></span></h3>
<h2>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-weight: normal;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">Entity framework 5 provides support for Enum datatype. Now a property or
field in a class can be declared as a Enum Type. Entity framework will
successfully save the entity in DB and will display it back. But it will not
store Enum type as static data in table rather will store the enum type as int
value type.</span><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;">e.g.</span><b><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></b></div>
<table align="left" border="0" cellpadding="0" cellspacing="0" class="MsoNormalTable">
<tbody>
<tr style="height: 6.0pt; mso-yfti-firstrow: yes; mso-yfti-irow: 0;">
<td style="height: 6.0pt; padding: 0cm 0cm 0cm 0cm; width: 48.75pt;" width="65"></td>
</tr>
<tr>
<td style="padding: 0cm 0cm 0cm 0cm;"></td>
<td style="padding: 0cm 0cm 0cm 0cm;"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;">Public enum</span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"> <span style="background: #CCCCCC;"> Color {</span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 36pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;">White,</span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 36pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;">Black,</span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 36pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;">Red,</span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin: 0cm 0cm 0.0001pt 36pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;">Yellow</span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;">}</span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;">Public </span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"> <span style="background: #CCCCCC;">Class Car</span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;">{</span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"> </span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"> <span style="background: #CCCCCC;">Public</span> <span style="background: #CCCCCC;"> Color
BodyColor{get;set;}</span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"> </span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"> <span style="background: #CCCCCC;">Public </span> <span style="background: #CCCCCC;">decimal
Price {get;set;} </span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"> </span><span style="font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"> <span style="background: #CCCCCC;">Public string BrandName {get;set;}</span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;">}</span><br />
<span style="background: #CCCCCC; font-family: "Times New Roman","serif"; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: EN-IN;"><br /></span></div>
</td></tr>
</tbody></table>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><br clear="all" />
<o:p></o:p></span></b></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-weight: normal;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">If we create an instance of Car and save into the database table.</span><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-weight: normal;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;"> </span><span style="font-family: Arial, sans-serif; font-size: 10pt;">Car mycar = new Car();</span><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-weight: normal;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">mycar. BodyColor = Color.Red;</span><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-weight: normal;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">mycar.Price = 800000.00;</span><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-weight: normal;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">mycar.BrandName = “DZX”;</span><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-weight: normal;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">Table will have the data BodyColor as 2. (base value). There will not be
any static table with records as White, Black, Red and Yellow.</span><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
</h2>
<h3>
<span style="font-family: "Arial","sans-serif";">Spatial Data type:<o:p></o:p></span></h3>
<h2>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;">Entity framework 5.0 is now equipped with DbGeometry datatype which is equivalent
to Geometry datatype in SQLServer.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;">Now we can use DbGeometry datatype for location / Geographical
coordinate storing and manipulation.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;">e.g.<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;"> Public
class Office {<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;"> Public
string Name{get;set;}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;"> Public
DbGeometry Location{get;set;}<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;"> }<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;"> Office
Myoffice = new Office();<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;"> Myoffice.Name
= “XYZ”;<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;"> Myoffice.Location
= DbGeometry.FromText("POINT(40.644047 -73.782291)");<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt; font-weight: normal;"><br /></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: Arial, sans-serif; font-size: 10pt;"><span style="font-weight: normal;"> The same will get persist into the database table as Geometry
datatype in SQLServer.</span><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-family: Arial, sans-serif; font-size: 10pt;"> </span></b><b><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><o:p></o:p></span></b></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<br /></div>
</h2>
</div>
sarvesh upadhyayhttp://www.blogger.com/profile/04503713275537996890noreply@blogger.com0