DemoScript by huanghengdong


									Demo Script
Introducing Visual Studio LightSwitch
Lab version:    1.0.0

Last updated:   2/10/2012

OVERVIEW ................................................................................................................................................... 4
 Key Messages ........................................................................................................................................... 4
   Key Technologies ...................................................................................................................................... 4
   Time Estimates ......................................................................................................................................... 4

SETUP AND CONFIGURATION .................................................................................................................. 5

DEMO FLOW ................................................................................................................................................ 5

OPENING STATEMENT............................................................................................................................... 6

STEP-BY-STEP WALKTHROUGH .............................................................................................................. 7
  Segment #1 – Exploring the LightSwitch Development Environment ...................................................... 9
   Segment #2 – Creating data entities using the Entity Designer ............................................................. 10
   Segment #3 – Business Rules & Calculated Properties ......................................................................... 18
   Segment #4 – Creating and Customizing Screens ................................................................................. 22
   Segment #5 – Working with Queries ...................................................................................................... 33
   Segment #6 – User Permissions and Access Control ............................................................................ 37
   Segment #7 – Walkthrough of Deployment Options ............................................................................... 41

SUMMARY .................................................................................................................................................. 50
This document provides setup documentation, systematic instructions, and a written script for showing an Introduction to Visual Studio
LightSwitch. This document can also serve as a tutorial or walkthrough of the exposed technologies.
This demo shows how to get started building business applications with Visual Studio LightSwitch. The goal is to demonstrate how LightSwitch
does all the plumbing for you so that you can concentrate on the business value. It walks through creating a simple Vision Clinic application from
scratch that uses data from multiple sources. It also shows how to create entities, screens, queries, and write business rules. As the
demonstration progresses you get deeper into the capabilities of LightSwitch like how use access control and permissions as well as deployment.

Key Messages

        Visual Studio LightSwitch is the simplest way to develop business applications for the desktop and the cloud. LightSwitch handles all the
        plumbing for you so that you can concentrate on the business value. The only code you write is the only code you could write.

Key Technologies

This demo uses the following technologies:
    1. Microsoft Visual Studio LightSwitch

Time Estimates

       Estimated time for setting up and configuring the demo: 3 min

       Estimated time to complete the demo: 75 min
Setup and Configuration
System Requirements
    1. Microsoft Visual Studio LightSwitch (Note: Install LightSwitch on a clean machine. No other SKU should be installed for this intro demo)

    2. Microsoft Excel (for demoing the export to Excel feature)

This demo requires that the PrescriptionContoso database be attached to your local SQLEXPRESS instance (LightSwitch installs SQL Express).
To install the database:
    1. In Windows Explorer, copy the PrescriptionContoso.mdf and attachContoso.sql files to the C:\Temp directory. Please note that if you
       place the files in a directory with a different name, you will also need to change it in the attachContoso.sql script.

    2. From an elevated command prompt, switch to the C:\Temp directory and type:

         sqlcmd -S .\SQLExpress -i attachContoso.sql

        The PrescriptionContoso sample database will be installed in SQL Server Express and will be available for use from LightSwitch.

Demo Flow
The following illustrates the high-level flow for this demo and the steps involved:
Exploring the LightSwitch Development Environment
Creating data entities using the Entity Designer
Writing Business Rules & Calculated Properties
Creating and Customizing Screens
Working with Queries
User Permissions and Access Control
Walkthrough of Deployment Options

Opening Statement
Today I would like to walk you through a new development tool in the Visual Studio Family called Visual Studio LightSwitch. Visual Studio
LightSwitch is a development environment for building data-centric, n-tier, business productivity applications for the Windows desktop or as
browser-based applications. These applications can run locally, on the web or in the Azure cloud.
LightSwitch simplifies the development process because it lets you concentrate on the business logic and does a lot of the remaining work for
you. With LightSwitch, an application can be designed, built, tested, and in your user’s hands quickly. LightSwitch is perfect for small business or
departmental productivity applications that need to get built and deployed quickly and easily.
LightSwitch applications are based on Silverlight and a solid .NET application framework using well-known patterns and best practices like n-tier
application layering and MVVM as well as technologies like Entity Framework and RIA Services. The beauty of LightSwitch is that you don’t have
to know the details of these technologies to get up and running quickly.
Users expect certain features like search, the ability to sort and rearrange grids, and the ability to export data. With every LightSwitch
application, those features are already built in. You don’t have to write any code for navigation, toolbars/ribbons, dirty checking or database
concurrency handling. Common data operations such as adding, updating, deleting are also built in, as well as basic data validation logic. You can
just set some validation properties or write some simple validation code based on your business rules and you’re set. All the plumbing is handled
by LightSwitch which means you can concentrate on the code pertaining to your business. LightSwitch can also connect to a variety of data
sources including SharePoint and SQL Azure.
LightSwitch also allows levels of customization from the UI layer to the data source layer. LightSwitch has extensibility hooks for themes, shells,
screen templates as well as other items that you can install via the Extension Manager. You can also customize LightSwitch UI with your own
controls or build custom data sources specific to your needs.
This demo will take you on a tour of Visual Studio LightSwitch. We’ll take a good look at the development process by building a simple Vision
Clinic application from scratch that uses data from multiple sources. I’ll also show you how to create entities, screens, queries, and write
business rules. As the demonstration progresses you get a little deeper into the capabilities of LightSwitch like how to control user access and
permissions as well as deployment.
In this demo you will specifically see these things:
    1. The LightSwitch development environment and experience

    2. How to build a simple business application end-to-end that uses data from multiple sources

                a. You’ll get a solid introduction to how to build entities, screens and work with queries

                b. You’ll see how to add business logic and computed properties and work with validation

                c. You’ll understand how user access control and deployment works

Step-by-Step Walkthrough
This demo is composed of the following segments:
    1. Exploring the LightSwitch Development Environment

    2. Creating data entities using the Entity Designer

    3. Business Rules & Calculated Properties
4. Creating and Customizing Screens

5. Working with Queries

6. User Permissions and Access Control

7. Walkthrough of Deployment Options
Segment #1 – Exploring the LightSwitch Development Environment

Action                                     Script                                        Screenshot

1. Open Microsoft Visual Studio               When you open LightSwitch you’ll
   LightSwitch from Start | All                notice a start page tailored to the
   Programs.                                   LightSwitch developer. Make sure to
                                               visit the Developer Center for more
2. Walk through the Get Started tab            training content and step-by-step
   and point out the resources available       “How Do I” videos.

3. Hover over menu items toolbar and          As you can see the development
   note the simplified, focused                environment is streamlined and
   development environment compared            simplified. Only the tools you need to
   to professional and ultimate editions       build LightSwitch applications are

4. Click New Project                          Notice that the only choice I make up
                                               front is what programming language
5. Select Visual Basic as the                  to use, Visual Basic or C#. I don’t
   programming language and name               have to make any decisions about
   the project VisionClinic.                   what type of application I want. I can
                                               choose to deploy this as a desktop,
                                               web, or cloud application later.
6. Click OK.
                                              Note that you can also install
                                               LightSwitch into Professional and
                                               Ultimate editions and it will just show
                                               up like any other project template in
                                               Visual Studio.
Segment #2 – Creating data entities using the Entity Designer

Action                                  Script                                    Screenshot

1. Solution will be created, Solution      LightSwitch is all about data and
   Explorer will open and “Start with       screens. So the next decision you
   Data” page displayed                     make is whether you want to connect
                                            to an existing data source or start
                                            creating new tables.
2. Click “Connect to exiting Data            We’re going to do both in this
   Source”, select Database as the data       application so first let’s connect to an
   source type and then and select the        existing database I have that contains
   PrescriptionContoso database.              our product catalog

3. Expand the Tables node and select         I’m going to select both the Product
   all of them. Click OK                      and ProductRebate tables.
4. Entity Designer opens                    The entity designer is where you will
                                             spend most time. This is where you
5. Change the ProductRebate.Rebate           model your data, set up relationships,
   property to type Money                    and specify validation and business
                                             rules. The better you describe your
                                             data, the more LightSwitch can do for
6. Select the ProductRebateID and            you when creating screens. Notice
   uncheck “Display By Default” on the       that the Entity Designer keeps you
   properties window                         focused on just the entity you are
                                             designing and any direct

                                            I’m going to make a few changes to
                                             our data model. Because we have
                                             connected to an existing Data
                                             Source, LightSwitch will not change
                                             the fundamental storage types of the
                                             properties here. However, I can
                                             select types where the storage is the
                                             same. For instance, I will select type
                                             “Money” for the Rebate field.

                                            I’m also going to uncheck “Display By
                                             Default” for the ID, since this is an
                                             internal primary key that the user
                                             doesn’t need to see
7. Navigate to the Product table by             Next I’ll change a couple fields on the
   clicking the entity at the end of the         Product table. I’ll make MSRP a
   relation                                      Money type and I’ll change the
                                                 ProductImage to type Image. This will
8. Change the Product.MSRP property              create the right controls for us when
   to type Money                                 we create the screens.

9. Change the Product.ProductImage to
   type Image

10. Select the ProductID and uncheck
    “Display By Default” on the properties

11. Right-Click Data Sources in Solution        Our application is going to track
    Explorer and select “Add Table”.             patient prescriptions so I need to add
                                                 a new table.
12. Name table “Patient”.

13. Select the PatientID and uncheck            I’m going to name this table Patient
                                                 and we’ll need to fill out some
    “Display By Default” on the properties       properties here

14. Add following properties:
    LastName, String, Required
    FirstName, String, Not Required
    SSN, String, Not Required
    Gender, String, Required
15. For Gender, in the Properties              For gender we have a short, static list
    windows scroll down and make the            of values and we want to only store
    MaxLength = 1                               an M or F in the database. For these
                                                types of fields we can use a Choice
16. Scroll back up and select the “Choice
    List” link.                                Choice Lists are well suited for static
                                                (non-changing) series of values like
17. Enter values:                               Gender, or “Yes, No, Maybe” choices
    F , Female                                  that are fixed list of values
    M, Male

18. Click OK

                                               Notice that I can select a Phone
19. Continue entering properties:               Number type here. This is called a
    Phone, Phone Number, Not Required           Business Type in LightSwitch.
                                                Business types come with built-in
20. Explain business types. Demonstrate         validation and formatting as well as
    declarative validation (like Phone          special controls. Business types in
    number formats) in Properties               LightSwitch are also an extensibility
                                                point, you can create additional ones
    window.                                     and distribute them to other
                                                LightSwitch developers. Email
21. Finish properties                           address, Money and Image are also
    Email, Email Address, Not Required          built-in business types. Business
    Address1, String, Not Required              types also allow you to specify
    Address2, String, Not Required              declarative validation here in the
    City, String, Not Required                  properties window.
    State, String, Not Required
    PostalCode, String, Not Required

22. Click Save
23. Click “Add Table” at the top of the      Patients have Prescriptions so we
    entity designer. Name the table           need to add that table next.

24. Select the PrescriptionID and            Now I’ll fill out a couple properties for
                                              this table
    uncheck “Display By Default” on the
    properties window

25. Enter the following properties for
    RxDate, Date, Required
    Notes, String, Not Required
26. Click the “Relationship” button at the      Next I want to set up some
    top of the Entity Designer.                  relationships. A Patient has many
                                                 Prescriptions and there must be one
27. In the “To” column in the relationship       Product selected for each
    dialog select “Patient”                      Prescription.

                                                So first we’ll set up the relationship
                                                 from this Prescription entity to our

                                                Notice that the relationship dialog is
                                                 simplified and descriptive. This sets
                                                 up our referential integrity between
                                                 these tables.
28. Click the “Relationship” button at the      Next we’ll add the Product
    top of the Entity Designer again.            relationship to our prescription entity

29. In the “To” column in the relationship      Notice this time that there is a dotted
    dialog select “Product”                      line between the tables. This is
                                                 because we are setting up a
30. Click OK                                     relationship between two separate
                                                 data sources, the built-in database
                                                 we’re creating with Patients and
                                                 Prescriptions, and the external
                                                 database with our product catalog.
                                                 LightSwitch can manage the
                                                 relationship but can’t enforce the
                                                 referential integrity of the data.

                                                LightSwitch will add the Product ID
                                                 into our Prescription table in order to
                                                 manage the relationship automatically
                                                 for us.
31. Select the Product_ProductID and         Again, we’ll uncheck the “Display by
    uncheck “Display By Default” on the       Default” for the Product_ProductID
    properties window                         field since this is going to be used
                                              only internally by LightSwitch and we
                                              don’t want the user to see this on

Segment #3 – Business Rules & Calculated Properties

Action                                    Script                                      Screenshot
 1. Click the title bar of the Prescription       Next I’m going to specify some
    entity and scroll down to the                  Summary Properties for my entities.
    summary property in the properties             Summary properties describe the
    window.                                        entity when you see it referenced on a
                                                   screen. (You’ll see later when we
 2. Set the Summary Property Of                    create screens.)
    Prescription to RxDate
                                                  By Default, LightSwitch selects the
 3. Click the title bar of the Product             first string property as the summary
    entity in the Entity Designer and              property of an entity. But for
    scroll down to the summary                     Prescription I’ll select the RxDate
    property in the properties window.             since it’s required.

 4. Click the title bar of ProductRebate          Notice that Product already has the
    in the Entity Designer and scroll              ProductName set as the summary
    down to the summary property in                Property. That’s fine.
    the properties window
                                                  I’ll set the Product Rebate summary
 5. Set the Summary Property of                    property as the RebateStart
    ProductRebate to RebateStart

6. Click the title bar of the Patient in the      Now for Patient we really want the
   entity designer and scroll down to the          summary property to be not only the
   summary property in the properties              LastName but also include the
   window                                          FirstName. We can create a
                                                   calculated property to do this.
7. Click Calculated Property button at
   the top of the entity designer                 Enter the code to return LastName,
8. Name the property FullName and
   click the “Edit Method” link in the
   properties window.

9. Click Save
10. Close Patient.vb file to bring you
    back to the Entity Designer

11. Click the title bar of the Patient in the      Now all we need to do is set the
    Entity Designer and set the                     summary property for Patient to the
    summary property to FullName                    FullName calculated property
12. Select the Patient.SSN property and         Now we want to add a validation rule.
    drop down the “Write Code” button            We need to make sure the
    at the top of the entity designer            Patient.SSN is in the right format.
    (note: if your resolution is small you
    may need to click the arrow at the
    end of the toolbar first to see “Write      The way we access the validation
    Code”)                                       methods of the selected property by
                                                 selecting the “Write Code” button and
                                                 selecting the Property (underscore)
13. Briefly show all the method hooks.           Validate method. Notice you also
                                                 have access to a plethora of other
                                                 methods like entity level methods that
                                                 let you control the data update
                                                 pipeline as well as access control
                                                 methods that let you control user
                                                 access. We’ll get to that later.

14. Select the SSN_Validate method              We can validate this by checking the
                                                 entry against a regular expression.
15. Write code                                   We can easily find regular
                                                 expressions on the internet, my
                                                 favorite site is
16. Save
                                                Let’s write the SSN validation code
17. Close Patient.vb file to bring you
    back to the Entity Designer

18. Double-click the ProductRebates             One last rule I want to write is to
    entity in the Solution Explorer under        make sure the Product.RebateStart is
    PrescriptionContosodata to open the          before the Product.RebateEnd
                                                Let’s write that code next
19. Select the ProductRebateStart
    property and drop down the “Write
    Code” button at the top of the entity       Now that we’ve written our business
    designer (note: if your resolution is        rules the LightSwitch validation
    small you may need to click the              framework will handle calling these
    arrow at the end of the toolbar first to       rules at the right time for us. Property
    see “Write Code”)                              rules like these run first on the client
                                                   to give immediate feedback to the
                                                   user, and then on the server to
20. Write code for RebateStart
                                                   protect the data integrity no matter
                                                   what client is calling the middle tier.
21. From the Code Editor drop down the             This is best practice in n-tier design.
    list of methods at the top and Select
    the RebateEnd_Validate
                                                  LightSwitch has a rich validation
                                                   framework that allows you to write
22. Write code for RebateEnd                       rules once and run them in multiple
                                                   places. You can also provide
23. Save                                           informational and warning messages
                                                   in addition to validation errors.

24. Close ProductRebate.vb file to bring
    you back to the Entity Designer

Segment #4 – Creating and Customizing Screens

Action                                         Script                                         Screenshot
1. Click the Screen button at the top      Now that we have our data model
   of the Entity Designer                   created we’re ready to create our
                                            screens. Actually we could have
2. Walk through the screen templates        created a screen after we created our
                                            first entity and added business rules
                                            later. This is a key aspect of
3. Select New Data Screen and then          LightSwitch, it supports iterative
   choose Patient for the screen data       development very well.

4. Click OK                                As you can see, LightSwitch has 5
                                            screen templates out of the box.
                                            These quickly set up the layout of the
                                            screens but you can change them
                                            around how you want as you’ll see in
                                            a minute

                                           The first screen I’ll create is a New
                                            Data Screen for Patient since we
                                            need to add some Patients to our test
                                            database. Notice that you can also
                                            select the children if you want, in this
                                            case Prescriptions, but for this screen
                                            we’ll keep it simple.
5. Hit F5 to run the application        This opens the screen designer which
                                         allows us to make further
6. Point out the application shell       modifications if we want. But let’s just
   features you get for free             run the application right away and see
                                         what we get.

7. Close the New Data Screen right
   away to show dirty checking.         LightSwitch has created an entire
                                         application shell for us including a
                                         ribbon across the top, a navigation
                                         menu pane on the left and a tabbed
                                         main window area for our open

                                        Notice if I try to close the screen or
                                         the application while I have pending
                                         changes, the app will prompt us. I
                                         didn’t have to write any code for dirty
                                         checking, LightSwitch handles this all
                                         for us.
8. Enter Patient Details. Enter an       When I enter invalid data, our
   invalid email and SSN and show         business rules fire.
   the validation in action
                                         Email address uses declarative
9. Hover over the field to show the       validation which comes part of the
   message popup.                         business type. You just set some
                                          properties to control its behavior. For
10. Show the validation summary at        SSN we wrote explicit code to check
   the top of the screen                  this. Notice our custom message
                                          appears in this case.

                                         We also have a validation summary at
                                          the top of the screen. We didn’t have
                                          to write any code to display these
                                          validation messages, we only have
                                          indicate what the validation rules
                                          themselves should be. Again,
                                          LightSwitch is taking care of the
                                          plumbing for us.
11. Show the phone number control         Notice we also get a phone number
   & Gender auto-complete box              editor with the Phone Number
                                           business type

                                          Also our Gender choices show up in a
                                           nice auto-complete box

12. Finish entering the patient data      Notice when I click Save on our new
   and click Save                          patient, LightSwitch automatically
                                           brings up a screen ready for editing.
13. Close the app                          We didn’t need to create this screen
                                           explicitly. Because we fully described
                                           our data model, LightSwitch can
                                           generate screens for us if we don’t
                                           specify them.

                                          But what if I want to also show the
                                           patient prescriptions when I edit a
                                           patient? We can do that by specifying
                                           our own edit details screen. Let’s do
                                           that now
14. In solution explorer right-click on      So I’m going to add an Edit Details
   the Screens node and select Add            screen for Patient and this time I’ll
   Screen…                                    include the Prescriptions

15. Select Details Screen and                Also notice that LightSwitch wants to
   choose Patient for the screen data.        use this as the default edit screen.
   Include Patient Prescriptions              This means that anytime we edit a
                                              patient in the system this screen will
                                              be used by default. You can also
                                              change this by selecting the Patient
                                              entity in the entity designer and
                                              setting the default screen property.

16. Hit F5 to run the application            So let’s add another patient into the
17. Add another Patient and Click
   Save                                      Now notice when we save it our
                                              Patient details screen displays which
                                              allows us to enter prescriptions
18. Click the + button on the grid to        Notice when I enter a new
   add a new Prescription                     Prescription that you have by default,
                                              a generated screen based on the
19. Drop down the Product list and            entity and navigation to the product
   select a product                           lookup list automatically.

20. Save the screen                          This is pretty cool that LightSwitch
                                              uses the relationships to create smart
                                              navigation and screens and will hook
21. Close the app                             them all up automatically for you. This
                                              is why the better you can describe
                                              your data in the Entity Designer, the
                                              more LightSwitch can do for you
                                              when creating screens

22. In solution explorer right-click on      Now that we have some Patient data,
   the Screens node and select Add            let’s create a search screen
23. Select Search Data Screen and
   choose Patients for the screen
24. In solution explorer right-click on      However I want this search screen to
   the Screens node and select Edit           open first. Remember we created the
   Screen Navigation…                         New Data Screen first so that’s what’s
                                              opening first by default. We can
25. Select Search Patients screen             change this easily by editing the
   and click the Set button at the            screen navigation
   bottom to make it the default
   screen                                    Here I’ll set it as the default startup
                                              screen and move it to the top of the
26. Move it up to the top by clicking         Task menu
   the up arrow on the right-side

27. Hit F5 to Run the application            Here’s the search screen. Another
                                              cool feature of all the grids in the
28. Click the Excel button on the left        system is we can Export the data that
   of the search grid                         is showing in the grid to Excel. By
                                              using the search filters and sorting
                                              capabilities, you can create simple
29. Close Excel                               reports this way.
30. Type a search string in the        LightSwitch will automatically support
   search box and hit Enter             searching search across any string
                                        fields in the table using the search
                                        box at the top here

                                       You can shut both of these features
                                        off but they are on by default.

                                       You can also control how many
                                        records in a page are returned from a
                                        query as well as whether the grid
                                        supports sorting on the columns using
                                        the Screen Designer

                                       When grids are sorted or columns
                                        resized by users, these settings are
                                        remembered the next time the user
                                        runs the application

31. Click on the FullName link to      Notice that our summary property is
   open the Patient detail screen       showing as a clickable link. When I
                                        select a patient here our default edit
32. Click on the Design Screen          screen opens.
                                       What if I want to make some quick
                                        layout changes to this screen?
                                        Instead of having to stop the
                                        application, we can do this at
                                        development time by clicking the
                                        “Design Screen” button right here at
                                        the top right of the application
33. Select the Product under the            I want to show the Product on our
   Prescriprions data grid and move it       Prescriptions list a little differently by
   up before the Notes. In the               including the image. I also want to
   properties set the MinWidth to 100        change the order of the fields in the
                                             grid and set the editing of the fields to
34. Delete the Prescription summary          under the Prescriptions data grid
   control under the Prescriptions
   data grid

35. Set the Product control to Picture
   and Text and set Picture = Product
   Image, Title = Product Name,
   SubTitle = MSRP and Description
   = Description

36. Select the Prescription Data Grid
   then click Add at the bottom and
   choose Prescriptions – Selected
   Item. Delete the Patient auto-
   complete box.

37. Select the Prescriptions Data           Since we’ve now got the editing
   Grid Command Bar                          controls under the grid, we don’t need
                                             to display a modal window when we
38. Delete Add… and Edit… buttons            add or edit a record. So I’ll remove
                                             the edit button from the data grid
                                             command bar as well as change the
39. Click Add and select the                 Add button to just add a new row into
   AddNew button and move it to the          the grid. Now when the user selects
   top                                       or adds a row they can edit the
                                             controls below the grid.
40. Click Save
                                            It’s cool that we can make layout
                                             changes right here on the left and see
                                             a live preview displayed on the right.
                                             When we save the customization,
                                          those changes are persisted into the

                                         This is what I mean by LightSwitch
                                          supporting iterative development, you
                                          don’t need to stop debugging, modify,
                                          then rebuild again just to modify the

41. Walk through changes persisted           Now you can see the screen has
   to the screen                              changed right here at runtime.
                                              The design screen functionality is
42. Drop down the Products auto-              available only to the developer
   complete box under the data grid           while in debug mode and allows
   and not sort order                         us to make UI changes quickly.

43. Close App                                However notice that the Products
                                              are out of order. Let’s see how we
                                              can change that.
  44. Double-click on the Patient Detail      Let’s take a quick look at the screen
     screen in the Solution Explorer           designer. What you see in the center
                                               is called the content tree – which is all
  45. Briefly walk through the Screen          the controls and data that they are
     designer                                  bound to. On the left is the View
                                               Model, including the queries,
                                               properties and commands that are on
                                               the screen

                                              When you write code against the
                                               screen you are always writing code
                                               against this model. This makes it
                                               possible for third-parties to create
                                               custom shells which you can install to
                                               completely change the look and feel
                                               of the application.

Segment #5 – Working with Queries

Action                                     Script                                          Screenshot

1. Right-Click on Products entity under       In order to sort the products we need
   Data Sources in the Solution                to add a query.
   Explorer and select Add Query
                                              For this particular query I’ll name it
2. Name the query SortedProucts                SortedProducts and we’ll just ad a
                                               sort order on ProductName
3. Add Sort                                    ascending.

4. Select ProductName, Ascending              Notice however we can create filters,
                                               groups of filters as well as specify
5. Drop down the “Write Code” button
   to show additional methods
6. Click Save                               And anything we can’t do here in the
                                             designer we can drop to code by
                                             writing LINQ code in the
                                             PreProcessQuery method

7. Double-click on PatientDetail to         Now we need to add this query to our
   open the screen designer                  Patient Detail screen in order to use it
                                             for the product lookup list
8. Click Add Data Item button at the
   top and select Query for the screen
   member type and choose
   SortedProducts query

9. Click OK
10. At the bottom of the content tree,        Now we just set the query as the
    Select the Product auto-complete           choices property of the Product auto-
    box and in the properties window set       complete box
    the Choices to SortedProducts
                                              Notice that no other queries show up
                                               here and we have a few on this
                                               screen. LightSwitch is smart enough
                                               to only let you select from queries that
                                               return the entity type it expects, in this
                                               case products.

11. F5 to run the application                 Now when we edit or add a new
                                               prescription record the Product list is
12. Select a Patient on the Search             sorted properly
    Screen to open Patient Detail

13. Add a new Prescription by clicking
    the + button on the data grid,
    dropdown the product list

14. Save Screen, Close App

15. Right-click on the Products entity        You can also base entire screens on
    again in the Solution Explorer and         queries. Let’s create a screen that
    select Add Query                           allows us to edit the products but we
                                               want to pull up products based on
16. Drop down the Source dropdown              their Category.
    and select SortedProducts
                                              This time we’ll base this query on the
17. Name the Query                             SortedProduct query. LightSwitch
    ProductsByCategory                         allows us to “build up” queries by
                                                basing them on another query. This is
                                                particularly useful if you have complex
18. Add filter on Category, select
                                                queries and you just need to change
    Parameter type and select “Add
                                                filters or sorts.
    New” parameter

19. Click Save                                 Here we’ll specify the Category as a
                                                parameter to this query. Now let’s
                                                create a screen based on this

20. Right-click on the Screens node in         I’ll create a List and Details screen
    the Solution Explorer and select “Add       this time and base the screen on the
    Screen”                                     query we just created. I’ll also include
                                                the ProductRebates on the screen
21. Select List and Details screen and          and name it ProductsCatalog
    choose the –ProductsByCategory
    query for the screen data

22. Select the Product ProductRebates
    to include on the screen.

23. Name the screen ProductsCatalog

24. Click OK

25. Click on the ProductCategory data          Before we run the application, notice
    item on the left of the screen              that a ProductCategory data item has
    designer and note the                       been added to the screen. This data
    IsParameterProperty                         item is feeding the Query parameter
                                                Category as indicated by the line you
                                                see linking them

                                               If we check the IsParameter here in
                                                the properties window then that
                                                means the screen would need to be
                                                passed the parameter value in code,
                                                which we could totally do. But for this
                                              example, I want the user to enter the
                                              value like a simple search.
                                              LightSwitch has already set that up
                                              for us.

26. Hit F5 to run the application            Notice I can search on Category with
                                              this textbox here at the top now
27. Open the Product Catalog Screen

28. Enter “Allergy” in the Category
    textbox and hit TAB or ENTER

29. Close App

Segment #6 – User Permissions and Access Control

Action                                    Script                                       Screenshot

1. Double-click on the Project               We’ve got a pretty good looking
    Properties in the solution explorer       application but now we’d like to
    and select the Access Control tab         control user access to parts of the

                                             In order to do this we need to specify
                                              a set of user permissions and then
                                              check them in code.

                                             There are two parts to security in
                                              LightSwitch, authentication and
                                              authorization. Authentication means
                                              “you are who you say you are” and
                                              Authentication means, “now that I
                                              know who you are, here’s what you
                                            can do in the system”.

                                           We specify these settings on the
                                            Access Control tab of the project

2. Click the Use Forms Authentication      You can add permissions and check
                                            them in code for anything in the
3. Enter user permissions:                  system but typically you add
   CanAccessProductCatalog                  permissions on Screens, Entities and
   CanInsertPatient                         Queries. There are built-in hooks for
   CanUpdatePatient                         you for these types of items in the
   CanDeletePatient                         system.
                                           You can also specify whether you
                                            want to use Windows or Forms
                                            authentication. Windows is
                                            appropriate if all users are on the
                                            same domain and you want to use the
                                            windows logins. Forms authentication
                                            is appropriate for internet-based
                                            applications where LightSwitch will
                                            present a login screen and you
                                            manage passwords through the
                                            LightSwitch application. Let’s choose
                                            Forms Auth.

                                           I’ll add 5 user permissions. One will
                                            be a screen access permission to
                                            determine if a user has access to the
                                            Product Catalog

                                           The other 4 will determine levels of
                                            access to the Patient entity itself.
                                            Entity access control is more secure
                                            than screen access control because it
                                            is checked on the middle tier. No
                                            matter what screen, the entity access
                                            control methods will fire.

4. Check off “Enabled for Debug” for       Next we specify what permissions we
   the CanReadPatient permission            want to enable at debug time. This is
                                            specified by checking the “Enabled for
5. Click Save                               Debug” in the permissions grid. This
                                            allows you to as the developer to
                                            bypass any login screen and easily
                                            test combinations of permissions.

                                           For this test, I’ll just check off

                                           Now that we have our permissions set
                                            up, let’s write some code to check

6. Double-click the ProductCatalog         As you can see every screen provides
   screen in the solution explorer to       a CanRun access control method.
   open the Screen Designer
                                           Let’s write the code to check the
7. Drop down the “Write Code” button        CanAccessProductCatalog
   and select the                           permission
   CanRunProductCatalog method
   under the Access Control methods

8. Write the permission check code
9. Double-click Patient entity in the        Next we’ll add permission checks for
   Solution Explorer to open the entity       the Patient entity

10. Drop-down the “Write Code” button
    to see the Access Control methods
    for an entity

11. Select CanDelete, CanInsert,
    CanRead, CanUpdate

12. Write the Permission check code          Next we’ll write the entity aces control
                                              code. This code is going to run on the
13. Hit F5 to run the application              Now when I run this notice right away
                                                I don’t have access to the Product
14. Select a Patient in the search screen       Catalog. I only have access to read
    to open Patient Detail                      patients.

                                               If I select a Patient in the search
                                                screen notice that all the Patient fields
                                                are automatically disabled for me. I
                                                can still add prescriptions, but I can’t
                                                modify the Patient entity. Cool!

15. Click on the Create New Patient            Notice however, that I forgot to control
    screen                                      access to the Create New Patient
                                                screen. Let’s see if we can trick the
16. Fill out required Patient fields            system and add a patient

17. Click Save                                 When I click save, we get an error
                                                thrown from the middle-tier. Our data
                                                is secure no matter if we forget to
18. Click OK                                    secure a screen on the client.

19. Close App

Segment #7 – Walkthrough of Deployment Options

Action                                      Script                                          Screenshot
1. Double-click on the Properties in       Now let’s walk through some
 the Solution Explorer and select the       deployment options for our application
 Application Type tab.                      now that it’s complete. Notice I
                                            haven’t had to make a choice about
                                            deployment until now. That’s the
                                            beauty of LightSwitch, in most cases
                                            you can just build the application,
                                            deploy it and then change the
                                            deployment later as the application
                                            needs to scale up

                                           Here on the Application Type tab we
                                            have a variety of options for
                                            deployment. First we can choose
                                            whether we want to deploy the the
                                            client as a desktop or browser
                                            application. Desktop apps run on
                                            Windows and have access to the
                                            machine and other programs running
                                            on Windows

                                           Browser-based applications don’t
                                            have access to the computer but can
                                            run on a variety of operating systems
                                            and browsers that Silverlight

                                           If you select Desktop, you can deploy
                                            the middle-tier or application services
                                            onto the same machine, therefore
                                            creating a more traditional client-
                                            server setup where clients connect
                                            directly to the database. This avoids
                                            the need for a web server but also
                                            means the clients must be running the
                                            full .NET framework.
                                       Otherwise you can choose to deploy
                                        the middle-tier on a web server, one
                                        that you own or an ISP, or you can
                                        deploy to Azure. The wizard helps
                                        you set up an Azure account if you
                                        don’t have one.

                                       For this demo I’ll just deploy as a
                                        desktop 2-tier application. Once
                                        deployed, I’ll run through the
                                        administration screens to set up our
                                        users into the system

2. Click Publish                       For client configuration we’ll select
3. Client configuration = Desktop
4. Next
5. Application Server Configuration =      We’ll select Local deployment next

6. Click Next

7. Publish Options = leave defaults        Here is where we indicate where to
                                            publish the application. This
8. Click Next                               deployment option will create a
                                            clickonce setup.exe for us. If I was
                                            deploying this to other users, I’d
                                            specify a UNC share. The default puts
                                            the setup files under the \Publish
                                            folder of the project

                                           We also have the option of publishing
                                            directly to the database or create a
                                            script to deploy later. I’ll publish
9. Database connections = leave              Next we specify the connection
   defaults                                   strings for the administrator of the
                                              database for deployment of the data
10. Click Next                                base and the user connection string
                                              that is placed in the client
                                              configuration which is used when
                                              users connect to the database. I’ll use
                                              the defaults here as well but notice
                                              that you can create a user database
                                              login right here in the dialog.

11. Enter administrator user name, full      Since we have this application set to
    name and password                         use forms authentication we need to
                                              deploy the administrator account. This
12. Click Next                                user will have access to the
                                              administration screens which allows
                                              them to set up all user access in the
13. Prerequisites = defaults          Next we specify any prerequisites that
                                       need to be installed on the user’s
14. Click Next                         machine to run the application. We
                                       don’t need anything else but the
                                       defaults for our app so I’ll just click

15. Other Connections = defaults      Here is where we specify the
                                       connection string to our external data
                                       source, in our case the
                                       PrescriptionContoso database. Again,
                                       I’ll use the defaults here which is the
                                       same connection we specified when
                                       we added the external data source in
                                       the begining.
16. Specify a Certificate = defaults          Next we can specify a certificate to
                                               use to sign the application so that
                                               when users install, the application is
                                               trusted. You typically get these
                                               certificates form a cert authority like
                                               Verisign or you may have one you
                                               use for your company internally.
                                               Again I’ll just click next.

17. Summary – view settings                   Finally we get to the Summary page
                                               where we can verify our publish
18. Click Publish                              settings and then click Publish.

19. Wait until Publish succeeds (you can      This will take a couple minutes
    see the progress in the output             because it will create the database for
    window if it is open)                      us and then publish the setup.exe
                                               under the \Publish folder
20. Open \Publish folder and Click on       Now I’ll install the application by
    the Setup.exe                            clicking on the setup.exe

21. Click Install                           Click the install button and the
                                             application will install on my machine
                                             and launch

22. Login to the application using the      Forms authentication will prompt us
    username/pass you entered on the         for the login we entered so let me do
    Publish screen                           that

23. Click Log In
24. Enter Roles and Permissions:            Next we specify Roles in the
    Product Planner = Can Access             application. The System Administrator
    Product Catalog                          is entered by default but we can
    Patient Admissions = Can Read            specify any additional roles we want.
    Patient, Can Delete Patient, Can
    Update Patient, Can Insert Patient
    Prescription Entry = Can Read           I’ll add three, Product Planner, Patient
    Patient                                  Admissions, and Prescription Entry

                                            Product Planner will only have
25. Save Roles Screen                        permission to access the Product
                                             Catalog screen

                                            Patient Admissions will be allowed to
                                             Insert,Update,Delete and Read

                                            Prescription Entry will only be allowed
                                             to Read the Patient

26. Open Users Screen                       Now we can add users to the system
                                             and assign them roles
27. Add another user and assign roles

28. Save Screen

29. Close App
30. Restart app from Windows Start            Notice when I log back into the
    menu: Start menu – Vision Clinic           system as the other user I now have
                                               the right access rights to parts of the

                                              If I want to uninstall the application I
                                               can do so from Add/Remove
                                               Programs like usual.

                                              Cool!

In this demo, you saw how you can use Visual Studio LightSwitch to create fully functional business applications quickly that runs on the desktop,
the web or the cloud. Use Visual Studio LightSwitch to create business productivity applications that need to get done fast.

To top