嶽永鹏/文
本实例以MS AdventureWorks2008Entities数据库为基础,演示了LINQ TO ENTITY、LINQ TO ENTITYSQL和LINQ TO ENTITYCLIENT。
XAML:
<Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="2*"/> <ColumnDefinition Width="8*"/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <ListBox Grid.Column="1" Margin="10" Name="listBox1" /> <Button Content="LinqToEntity" Grid.Column="0" Margin="5" Name="button1" Click="button1_Click" /> <ListBox Grid.Column="1" Grid.Row="1" Margin="10" Name="listBox2" /> <Button Content="LinqToSQL" Grid.Column="0" Grid.Row="1" Margin="5" Name="button2" Click="button2_Click" /> <ListBox Grid.Column="1" Grid.Row="2" Margin="10" Name="listBox3" /> <Button Content="LinToEnClient" Grid.Column="0" Grid.Row="2" Margin="5" Name="button3" Click="button3_Click" /> </Grid>
Button1 LINQ TO ENTITY
using (var context = new AdventureWorks2008Entities()) { //var people = context.People.Where(c => c.LastName == "King").OrderBy(d => d.FirstName).Select(r => new { r.FirstName,r.LastName}); //var people = context.People.Where(c => c.LastName == "King").OrderBy(c =>c.FirstName).Select(c => new { c.FirstName, c.LastName }); var people = from per in context.People //join emp in context.Employees on per.BusinessEntityID equals emp.BusinessEntityID where per.LastName == "King" orderby per.FirstName select new { per.FirstName, per.LastName}; foreach (var person in people) { listBox1.Items.Add(string.Format("{0} {1} ", person.FirstName, person.LastName)); } }
Button2 LINQ TO ENTITYSQL
using (var context = new AdventureWorks2008Entities()) { var str = "SELECT VALUE p FROM AdventureWorks2008Entities.People AS p WHERE p.LastName= @LastName Order by p.FirstName"; //var people = context.CreateQuery<Person>(str); var people = new System.Data.Objects.ObjectQuery<Person>(str, context); people.Parameters.Add(new System.Data.Objects.ObjectParameter("LastName", "King")); foreach (var person in people) { listBox2.Items.Add(string.Format("{0} {1}", person.FirstName, person.LastName)); } }
Button3 LINQ TO ENTITYCLIENT
var firstName = ""; var lastName = ""; using (EntityConnection conn = new EntityConnection("name=AdventureWorks2008Entities")) { string str = "SELECT p.FirstName, p.LastName FROM AdventureWorks2008Entities.People AS p WHERE p.LastName='King' Order by p.FirstName"; conn.Open(); EntityCommand cmd = conn.CreateCommand(); cmd.CommandText =str; using (EntityDataReader rdr = cmd.ExecuteReader(System.Data.CommandBehavior.SequentialAccess)) { while (rdr.Read()) { firstName = rdr.GetString(0); lastName = rdr.GetString(1); listBox3.Items.Add(string.Format("{0} {1}", firstName, lastName)); } } conn.Close(); } }