LINQ is a new feature available from .net version 3.0 and
above. It called as LANQUAGE INTEGRATED
QUERY there are different flavors of LINQ available like LINQ TO SQL, LINQ
TO XML etc.. Taking advantage of LINQ you can query the collection as if you
are querying from a database.
LINQ offers a compact, expressive, and
intelligible syntax for manipulating data. The real value of LINQ comes from
its ability to apply the same query to an SQL database, a DataSet, an array of
objects in memory and to many other types of data as well.
Queries Syntax
from
<<element>> in <<collection>>
where
<<expression>>
select
<<expression>>
Lambda Expressions
While you
are working with LINQ, you will find some
"weird syntax" in the form
x
=> y
.
Advantages
- It is a cleaner and type safety.
- Data is easy to setup and use
- It can be debugged easily.
- Quick turnaround for development
- Queries can be dynamically
- Tables are automatically created into class
- Columns are automatically created into properties
- Relationship are automatically appeared to classes
- Lambda expressions are awesome
- It is checked by the compiler instead of at runtime
- It can be used against any datatype - it isn't limited to relational databases, you can also use it against XML, regular objects.
- It can able to query not just tables in a relational database but also text files and XML files.
Disadvantages
- No clear outline for Tiers
- No good way of view permissions
- Small data sets will take longer to build the query than execute
- There is an overhead for creating queries
- When queries are moved from sql to application side, joins are very slow
- DBML concurrency issues
- Hard to understand advance queries using Expressions
- Can be hard to understand when you first start out with it
- Deferred execution can separate errors from their causes (in terms of time)
- Out-of-process LINQ (e.g. LINQ to SQL) will always be a somewhat leaky abstraction - you need to know what works and what doesn't, essentially
- LINQ sends the entire query to the DB hence takes much network traffic but the stored procedures sends only argument and the stored procedure name. It will become really bad if the queries are very complex.
- Performance is degraded if we don't write the linq query correctly.
- If you need to make changes to the way you do data access, you need to recompile, version, and redeploy your assembly.
- No clear outline for Tiers
- No good way of view permissions
- Small data sets will take longer to build the query than execute
- There is an overhead for creating queries\
- When queries are moved from sql to application side, joins are very slow
- DBML concurrency issues
- Hard to understand advance queries using Expressions
Disadvantage of LINQ over stored procedures
The disadvantage with LINQ is, it is not a precompiled
statement where as stored procedures are precompiled. In case of LINQ the
queries need to be compile before the execution. So according to this, I can
say stored procedures are faster in performance as compared to LINQ.
Example
int[] digits = { 1, 2,
3, 4, 5, 6, 7, 8, 9, 10 };
var num =from n in digits where n >= 6 select
n;
Response.Write("Numbers
< 5:");
foreach (var x in num)
{
Response.Write(x);
}
Comments
Post a Comment