I was about to write this entry in my blog which I found. Before that I got comment in my previous Blog on C# 3.0 Features: Automatic Property (Part 2). The same question came in my mind. What will happen if you try to create an automatic property just with get. The C# 3.0 compiler throws an error. If you try to write
//Automatic Property
public int CustID2
{
get;
}
The error looks like
'ConsoleApplication1.Customer.CustID2.get' must declare a body because it is not marked abstract or extern. Automatically implemented properties must define both get and set accessors.
To many it is very unfortunate because most often we may need to declare read-only property (commonly known as “getter” property). But we do have way to do this
The same set of property can be declared as
private set;
This allows us to create the read-only property.
Namoskar!!!
Thank you everyone for showing interest on my blog entry C# 3.0 Features: Automatic Property. Questions like, why this approach? What if there is any condition in property? Let me tell you, we have implemented the higher level of abstraction in C# 3.0. If you are simply creating a property (we often do) then the pain declaring the local variable and its value setting/getting are being taken care by the CLR. So internally CLR declares the property exactly like what we used to do earlier.
Let’s say
public class Customer
public Customer() { }
//Conventional Way
private int _XYZ;
get { return _XYZ; }
set { _XYZ = value; }
public int CustID
set;
For both the cases if you examine the assembly through IL DASM. You will get the following result (the red-boxed areas are for automatic property)
If you have noticed for the property CustID (which is Automatic) it created a private variable k__AutomaticallyGeneratedPropertyField0 of type int32. This is the extra work CLR does for us.
We do have backward compatibility with C# 3.0. That means all the code that you have written in previous version of C# will compile with no error (provided it is clean codeJ).
I am super excited with the Orcas March 2007 CTP release. I was doing the hands on with the C# and LINQ and as you know C# 3.0 comes with a lot of new things which increases the level of abstraction for the developer. We now write less and do more. As I often have mentioned in my previous entries and presentations with Microsoft Partner that now have think more on why not on how. I remember the day when I first learned the Property. I used to scratch my head on what to do with get or set. I probably started it now as we have snippet for property. Anyways in conventional way we declare property in a class like
private int _CustID;
get { return _CustID; }
set { _CustID = value; }
Now C# 3.0 suggests us not to invest so much. Rather than using property like
We can declare property like
No more private variable or = or value etc required. This is Automatic property in C# 3.0.
We have talked a lot about LINQ and its power. One of the main reasons behind the LINQ design goal was to enable the unified query like syntax for any kind of structured data.
There is hardly any ASP.NET application which does not deal with data. We can create layered ASP.NET Application using the LINQ power. Scott talked about this and has given a very nice walkthrough.
Please visit
Using LINQ with ASP.NET (Part 1)
Using DLINQ with ASP.NET (Part 2 of my LINQ series)
LINQ to SQL (aka DLinq) generates SQL queries for us at the back. SqlMetal.exe does not contain any SQL query as it is pure object we do not prefer to keep anything which is not strongly typed. As you all know that LINQ to SQL creates the query for us. But the question is how it looks like? If you really want to verify the performance to make sure that LINQ to SQL is giving us the best query performance (always pain to DB developer)
Say, you have a small which retrieves the data from Northwind database. For more details please visit my entry on DLINQ: ADO.NET vNext a lap around
Northwind db = new Northwind("northwindConnection");
var query = from c in db.Customers
where c.City == "London"
select c;
foreach (var c in query)
Console.WriteLine(c.CompanyName);
Very well it will return the values one by one. Then how is the query?
Yes we do have a property to get the SQL query inside the SqlMetal.exe generated class file. The name of the property is Log. Let’s see how we can implement it. I am using Console application. The code will look like
db.Log = Console.Out;
This will give you the SQL query in output window and the query would look like,
SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], ...
FROM [Customers] AS [t0]
WHERE [t0].[City] = @p0
-- @p0: Input NVarChar (Size = 6; Prec = 0; Scale = 0) NOT NULL [London]
SqlProvider\AttributedMetaModel
Hope this will help you to rectify more confusion.
Few days back I have talked about the IE 7 short cut keys in one of my BLOG entries at IE 7 Shortcut keys tips. I also have found a page at IE 7 in Microsoft which talks about the exhaustive list on the same. Let me share that with you here
http://www.microsoft.com/windows/products/winfamily/ie/quickref.mspx
If you are Windows Live™ Messenger 8.1 user then you can be the part of this initiative.
Where is Windows Live™ Messenger 8.1?
Download is available from MSN.
What is IM?
(as mentioned in the site)
i’m is a new initiative from Windows Live™ Messenger. Every time you start a conversation using i’m, Microsoft shares a portion of the program's advertising revenue with some of the world's most effective organizations dedicated to social causes. We've set no cap on the amount we'll donate to each organization. The sky's the limit.
So any time you have an i’m™ conversation using Windows Live Messenger, you help address the issues you feel most passionate about, including poverty, child protection, disease, and environmental degradation. It's simple. All you have to do is join and start an instant messaging conversation. We'll handle the donation.
There's no charge, so join now and put our money where your mouth is.
Stay connected.
Namoskar
We have started enjoying the IE7 and IE 7 always tries to help us by providing the possible shortcut keys (as being impatient we miss it). Here are those for you and me
Keyboard shortcuts
Open links in a new tab in the background
CTRL+click
Open links in a new tab in the foreground
CTRL+SHIFT+click
Open a new tab in the foreground
CTRL+T
Open a new tab from the Address bar
ALT+ENTER
Open a new tab from the search box
Open Quick Tabs (thumbnail view)
CTRL+Q
Switch between tabs
CTRL+TAB/CTRL+SHIFT+TAB
Switch to a specific tab number
CTRL+n (n can be 1-8)
Switch to the last tab
CTRL+9
Close current tab
CTRL+W
Close all tabs
ALT+F4
Close other tabs
CTRL+ALT+F4
Mouse shortcuts
Open a link in a background tab
Click the middle mouse button on a link
Open a new tab
Double-click the empty space to the right of the last tab
Close a tab
Click the middle mouse button on the tab
There are a lot. Best place to view the enhancements is non none other than its own download location at MSDN.
We have released the VPC of Orcas March 2007 CTP to avoid the conflict in production machine. Since the Virtual PC 2004 SP1 is free and now downloadable from MSDN. One very important thing is that you should not miss to download the Orcas Base Image. If you miss to download this you will end up loosing the valuable experience with the magic of Orcas.
Get Started with ASP.NET AJAX
Take your first steps toward learning Microsoft ASP.NET AJAX, from downloading and installing the framework to creating your first AJAX-style application.
Get Started with the ASP.NET AJAX Control Toolkit
Learn how to extend your ASP.NET AJAX applications using the ASP.NET AJAX Control Toolkit. This video starts with the very basics, including downloading and installing the toolkit, and adding a few...
Use the ASP.NET AJAX CascadingDropDown Control Extender
This video demonstrates how ASP.NET’s standard DropDownList can become AJAX-enabled using the CascadingDropDown control extender from the ASP.NET AJAX Control Toolkit. You will also see how...
Implement Dynamic Partial-Page Updates with ASP.NET AJAX
In this video you will learn how to add dynamic partial-page updates to your ASP.NET application using Microsoft ASP.NET AJAX. In particular, you will see how to use the TimerControl to manage...
Make Client-Side Network Callbacks with ASP.NET AJAX
In this video we see how Microsoft ASP.NET AJAX helps web developers make network callbacks directly from client-side script code. We see also how an ASP.NET AJAX-enabled web service generates the...
Add ASP.NET AJAX Features to an Existing Web Application
Learn how easily you add Microsoft ASP.NET AJAX functionality to an existing ASP.NET application. This video shows that there is no need to change your server controls or data access code —...
ASP.NET AJAX Enable an Existing Web Service
This video demonstrates how simple it is to add Microsoft ASP.NET AJAX functionality to an existing ASP.NET web service. This enables the web service to generate a JavaScript proxy that the client...
Use the ASP.NET AJAX TextBoxWatermark Control Extender
In this video you will learn how to use the TextBoxWatermark control extender from the ASP.NET AJAX Control Toolkit, which adds new watermark properties to all standard TextBox controls on an ASP.NET...
Use the ASP.NET AJAX Popup Control Extender
This video demonstrates the use of the Popup control extender that ships with the ASP.NET AJAX Control Toolkit. Learn how to extend a TextBox control so that, when it receives focus, a popup dialog...
Use the ASP.NET AJAX ModalPopup Extender Control
Learn how to use the ASP.NET AJAX ModalPopup extender control that comes with the ASP.NET AJAX Control Toolkit. In this video the ModalPopup extender is used to pop open a standard ASP.NET Panel...
Use the ASP.NET AJAX AlwaysVisible Control Extender
See how easy it is to anchor a page element to a position on screen, where it remains always visible no matter how far the user may scroll the document. The floating page element may be anything...
Use the ASP.NET AJAX Accordion Control
Learn how the ASP.NET AJAX Accordion control makes efficient use of screen real-estate by enabling the smooth animated transition between different content panes.
Use the ASP.NET AJAX Client Library Controls
Demonstrates the client-side programming experience using scripts and controls from the ASP.NET AJAX client library. The client controls add actions, behaviors, and data-bindings to the client-side...
Use the ASP.NET AJAX Collapsable Panel Extender
In this video you will learn how to use the ASP.NET AJAX Collapsable Panel Extender to allow the user to dynamically show or hide content on a web page.
Use the ASP.NET AJAX Draggable Panel Extender
With the ASP.NET AJAX Draggable Panel Extender you can provide a content panel with a header area that allows the user to move the panel around the web page.
Use the ASP.NET AJAX DynamicPopulate Extender
Watch a demonstration of using the ASP.NET AJAX DynamicPopulate extender to dynamically populate an area of a web page with the results of an asynchronous call to a web method.
Use the ASP.NET AJAX FilteredTextbox Extender
Learn how the handy ASP.NET AJAX FilteredTextbox extender allows the developer to define which characters the user may enter in a text box control.
Use the ASP.NET AJAX HoverMenu Extender
Discover how to use the HoverMenu extender control to create a context-sensitive menu that appears whenever the user hovers the mouse over an element of a web page.
Use the ASP.NET AJAX ToggleButton Extender
Demonstrates using the ToggleButton extender control to modify the behavior and appearance of the standard ASP.NET CheckBox control to enhance the user interface.
Use an ASP.NET AJAX ScriptManagerProxy
Learn how a ScriptManagerProxy enables a content page to pass references to the ScriptManager placed on its ASP.NET master page, allowing each content page to define its own AJAX behavior.
Use the ASP.NET AJAX DropShadow Extender
Discover how to improve the presentation of ASP.NET sites by using the AJAX DropShadow extender control to add opaque, rounded-corner drop shadows to areas of your pages.
Use the ASP.NET AJAX PasswordStrength Extender
Learn how the PasswordStrength extender control provides immediate and dynamic feedback to users about the strength of their chosen passwords. The feedback can be a text notice, a graphical bar...
Use the ASP.NET AJAX RoundedCorners Extender
In this video we see how the RoundedCorner extender control can give your web pages a softer look and feel by adding attractive round corners to content areas.
Use the ASP.NET AJAX Timer Control
The AJAX Timer control enables a portion of an ASP.NET web page to be dynamically updated at a regular interval, rather than needing the user to perform an action such as clicking on a...
Implement the Predictive Fetch Pattern for AJAX
Demonstrates an implementation of the Predictive Fetch pattern for AJAX, where the AJAX engine uses the current state of the user’s interaction to predict which set of content will be...
What is Sandcastle?
Sandcastle documentation compilers enable managed class library developers throughout the world to easily create accurate, informative documentation with a common look and feel.
From where to download?
http://www.microsoft.com/downloads/details.aspx?FamilyID=e82ea71d-da89-42ee-a715-696e3a4873b2&displaylang=en
What’s is there?
http://blogs.msdn.com/sandcastle/archive/2007/03/06/announcing-march-2007-sandcastle-ctp.aspx
Other related resources
Enjoy
[Dedicated to Tupur on the eve of International Women’s Day. Wish you a very best of luck.]
BLinq is Linq integration to ASP.NET Applications which is now available in official ASP.NET website at http://www.asp.net/sandbox/app_blinq.aspx?tabid=62. You can download and install the exe to work with BLinq. BLinq is named keeping in mind that the web world is captured by blog sites and Linq is the core mapping technology behind it.
If you face any issue the use the BLinq forum at http://forums.asp.net/1076/ShowForum.aspx
Download is available at http://download.microsoft.com/download/1/B/0/1B02E2C5-2F4D-4F28-803B-8EF038FC0406/BlinqSetup.msi.
Before downloading you can check the prerequisites to enjoy the feature. The forum queries and feedback are being addressed by Polita Paulus who created this tool. So you can expect positive response from the forum. Before starting you can watch the 17 minute video from http://www.asp.net/learn/videos/view.aspx?tabid=63&id=35. This is a really interesting video by the creator of BLinq.
Here is a small example on the BLinq switches
From command browse the folder C:\Program Files\Microsoft ASP.NET\Blinq
Then in the command prompt type
blinq /server:myServer\myInstance /database:Northwind /namespace:MyBlinq
/vDir:MyBlinqVD /t:c:\MyBlinqD /user:dbCracker /password:secret!
Lot more other switches are available. This will create a virtual directory with the name MyBlinqVD from the existing folder at c:\MyBlinqD from the Northwind database at myServer’s myInstance using the user credential dbCracker\secret!
Let’s explore more and give feedback to developer directly.
[I am dedicating this article to one of my friends new born baby “Sricharan”]
If you have installed Orcas March 2007 CTP and trying to play with SQL Server 2005 Express database using the IDE feature. You might meet with an error mentioning “Unable to find the requested .Net Framework Data Provider. It may not be installed.” while trying the below mentioned steps
In Server Explorer, Add New Connection - > Choose SQL Server 2 - > Provide the local database server information -> (drop down will not be refreshed or if you forcefully type the database name in the text box) and hit OK button. The above mentioned error will block you to go ahead.
I did install Orcas in fresh machine and then installed VS 2005 there. I think that was the issue. But the workaround is little tricky here,
Steps to follow:
Go to the folder C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG
Select the Machine.config and then find the tag <DbProviderFactories> under <system.data>.Then next step is to hide all the provider entries which has either Version=3.5.0.0 or Version=9.0.242.0.
Following are the entries in my machine
<DbProviderFactories>
<add name="Odbc Data Provider" invariant="System.Data.Odbc" description=".Net Framework Data Provider for Odbc" type="System.Data.Odbc.OdbcFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="OleDb Data Provider" invariant="System.Data.OleDb" description=".Net Framework Data Provider for OleDb" type="System.Data.OleDb.OleDbFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="OracleClient Data Provider" invariant="System.Data.OracleClient" description=".Net Framework Data Provider for Oracle" type="System.Data.OracleClient.OracleClientFactory, System.Data.OracleClient, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add name="SqlClient Data Provider" invariant="System.Data.SqlClient" description=".Net Framework Data Provider for SqlServer" type="System.Data.SqlClient.SqlClientFactory, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<!--<add name="SQL Server Compact Edition Data Provider" invariant="System.Data.SqlServerCe" description=".NET Framework Data Provider for Microsoft SQL Server Compact Edition" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
<add name="SQL Server Compact Edition Client Data Provider" invariant="Microsoft.SqlServerCe.Client" description=".NET Framework Data Provider for Microsoft SQL Server Compact Edition Client" type="Microsoft.SqlServerCe.Client.SqlCeClientFactory, Microsoft.SqlServerCe.Client, Version=3.5.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
<add name="SQL Server CE Data Provider" invariant="Microsoft.SqlServerCe.Client" description=".NET Framework Data Provider for Microsoft SQL Server 2005 Mobile Edition" type="Microsoft.SqlServerCe.Client.SqlCeClientFactory, Microsoft.SqlServerCe.Client, Version=9.0.242.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />-->
</DbProviderFactories>
Then you are ready to work. Everything else will work fine.
Thanks to the entry from where I got the clue to the solution. You could find the bug entry at connect.
ASP.NET 1.1
· How To: Create a Custom Account to Run ASP.NET
· How To: Create a DPAPI Library
· How To: Create an Encryption Library
· How To: Create GenericPrincipal Objects with Forms Authentication
· How To: Implement IPrincipal
· How To: Implement Kerberos Delegation for Windows 2000
· How To: Prevent Cross-Site Scripting in ASP.NET
· How To: Set Up SSL on a Web Server
· How To: Set Up Client Certificates
· How To: Store an Encrypted Connection String in the Registry
· How To: Use DPAPI (Machine Store) from ASP.NET
· How To: Use DPAPI (User Store) from ASP.NET with Enterprise Services
· How To: Use Forms Authentication with Active Directory
· How To: Use Forms Authentication with SQL Server 2000
· How To: Use the Network Service Account to Access Resources in ASP.NET
· How To: Use Regular Expressions to Constrain Input in ASP.NET
· How To: Use Role-based Security with Enterprise Services
ASP.NET 2.0
· How To: Configure the Machine Key in ASP.NET 2.0
· How To: Connect to SQL Server Using SQL Authentication in ASP.NET 2.0
· How To: Connect to SQL Server Using Windows Authentication in ASP.NET 2.0
· How To: Create a Service Account for an ASP.NET 2.0 Application
· How To: Encrypt Configuration Sections in ASP.NET 2.0 Using DPAPI
· How To: Encrypt Configuration Sections in ASP.NET 2.0 Using RSA
· How To: Instrument ASP.NET 2.0 Applications for Security
· How To: Improve Security When Hosting Multiple Applications in ASP.NET 2.0
· How To: Perform a Security Deployment Review for ASP.NET 2.0
· How To: Protect Forms Authentication in ASP.NET 2.0
· How To: Protect From SQL Injection in ASP.NET
· How To: Use ADAM for Roles in ASP.NET 2.0
· How To: Use Authorization Manager (AzMan) with ASP.NET 2.0
· How To: Use Code Access Security in ASP.NET 2.0
· How To: Use Forms Authentication with Active Directory in ASP.NET 2.0
· How To: Use Forms Authentication with Active Directory in Multiple Domains in ASP.NET 2.0
· How To: Use Forms Authentication with SQL Server in ASP.NET 2.0
· How To: Use Health Monitoring in ASP.NET 2.0
· How To: Use Impersonation and Delegation in ASP.NET 2.0
· How To: Use Medium Trust in ASP.NET 2.0
· How To: Use Membership in ASP.NET 2.0
· How To: Use Protocol Transition and Constrained Delegation in ASP.NET 2.0
· How To: Use Role Manager in ASP.NET 2.0
· How To: Use Windows Authentication in ASP.NET 2.0
Authentication and Authorization
Code Access Security
· How To: Create a Custom Encryption Permission
· How To: Use Code Access Security Policy to Constrain an Assembly
Code Review
· How To: Perform a Security Code Review for Managed Code (Baseline Activity)
Communications Security
· How To: Call a Web Service Using Client Certificates from ASP.NET
· How To: Call a Web Service Using SSL
· How To: Use IPSec for Filtering Ports and Authentication
· How To: Use IPSec to Provide Secure Communication Between Two Servers
· How To: Use SSL to Secure Communication with SQL Server 2000
Configuration
· How To: Create a Custom Account To Run ASP.NET
Cryptography
Deployment Review
Enterprise Services (.NET Framework 1.1)
Impersonation and Delegation
Input and Data Validation
Patching and Updating
· How To: Secure Your Developer Workstation
· How To: Implement Patch Management
SQL Server 2000
Threat Modeling
· How To: Create a Threat Model for a Web Application at Design Time
Web Services (.NET Framework 1.1)
Wow we have it here
For the features please visit the download page.