§
2
Нововведения
C#
§
3 Entity Framework
Ключевое слово
var
Анонимные типы
Библиотека
LINQ
Методы расширения
λ
-
выражения
1.
Ключевое слово
var
:
DataGridTextBoxColumn
col
=
new
DataGridTextBoxColumn
();
String
s
=
DateTime.Now.
ToString
();
var
col =
new
DataGridTextBoxColumn
();
var
s =
DateTime.Now.ToString
();
2.
Анонимные типы
var
student
=
new
{
name
= “
Alex
”,
age
= 27 };
MessageBox.Show
(
String.Format
(
“{0} is {1:d} years old
”,
student
.
name
,
student
.
age
));
3.
Библиотека
LINQ
(Language Integrated Query)
var
ints
=
new
List<
int
>()
{ 1,
-
2, 3, 5,
-
1 };
var
pts
=
new
Point[]
{
new
Point(0.7, 2.3),
<…>
};
3.
Библиотека
LINQ
(Language Integrated Query)
List<
int
>
Positive(
List<
int
>
list)
{
???
}
1.0:
задача!
3.
Библиотека
LINQ
(Language Integrated Query)
List<
int
>
Positive(
List<
int
>
list)
{
var
res =
new
List<
int
>();
for
(
int
i = 0; i <
list.Count
; i++)
if
(list[i] > 0)
res.Add
(list[i]);
return
res;
}
1.1:
простой
C#
3.
Библиотека
LINQ
(Language Integrated Query)
List<
int
>
Positive(
List<
int
>
list)
{
var
res =
from
l
in
list
where
(l > 0)
select
l;
return
res;
}
1.2:
LINQ
3.
Библиотека
LINQ
(Language Integrated Query)
var
<out
-
collection> =
from
<item>
in
<in
-
collection>
where
(<…>)
orderby
(<…>)
select
(<…>);
3.
Библиотека
LINQ
(Language Integrated Query)
Примеры:
var
customers
=
from
order
in
orders
select
order
.customer
;
var
signs
=
from
number
in
numbers
select
(
number
> 0)? +1 :
(
number
< 0)?
-
1 : 0;
3.
Библиотека
LINQ
(Language Integrated Query)
var
<out
-
collection> =
<in
-
collection>
.Where(<…>)
.
OrderBy
(<…>)
.Select(<…>);
3.
Библиотека
LINQ
(Language Integrated Query)
List<
int
>
Positive(
List<
int
>
list)
{
return
list.Where
(l => l > 0).
ToList
();
}
1.
3:
ext. method
4.
λ
-
expressions
(
lambda
-
expressions
)
A function(B arg1, C arg2)
{
return
f(arg1, arg2); }
4.
λ
-
expressions
(
lambda
-
expressions
)
A function(B arg1, C arg2)
{
return
f(arg1, arg2); }
(
arg1, arg2)
=> f(arg1, arg2)
λ
!
4.
λ
-
expressions
(
lambda
-
expressions
)
Общие примеры:
x => x*x
x
2
(x, y) => (
x+y
)/2
avg
(x, y)
a =>
Math.Cos
(a)
cos
(a)
() =>
Math.PI
Π
4.
λ
-
expressions
(
lambda
-
expressions
)
Полезный пример:
public class
Point3D
{
public
int
x, y,
z;
public
Point3D(
int
x,
int
y,
int
z)
{
this
.x
= x;
this
.y
= y;
this
.z
= z
;
}
}
4.
λ
-
expressions
(
lambda
-
expressions
)
Полезный пример:
List<
int
[]>XYZ =
new
List<
int
[]>() {
new
int
[] { 10,
-
4, 3 },
new
int
[] { 4, 56,
-
1 },
new
int
[] {
-
34, 0, 8 }
};
4.
λ
-
expressions
(
lambda
-
expressions
)
Полезный пример:
var
pts
=
XYZ.Select
(xyz =>
new
Point3D
(
xyz[0]
,
xyz[1]
,
xyz[2]
))
;
Ключевое слово
var
Анонимные типы
Библиотека
LINQ
Методы расширения
λ
-
выражения
Проблема: Данные !=
Объекты
Данные:
◦
строки БД (
SQL)
◦
элементы
XML
◦
элементы
классов
◦
…
•
LINQ
-
to
-
SQL
•
LINQ
-
to
-
XML
•
LINQ
-
to
-
Entities
•
LINQ
-
to
-
…
ADO.NET Entity Framework
ADO.NET Entity Framework
◦
Context
<
-
>
DataBase
◦
Entity Set
<
-
>
Table
◦
Entity
<
-
>
Row
SQL DB Model
Entity Model
Работа с
ADO.NET Entity Framework
◦
от модели
сначала
–
Entity Model
в дизайнере
Visual
Studio
затем
–
Generate
DataBase
from Model
◦
от базы данных
по готовой БД
–
Generate from
DataBase
Добавление объекта в БД
var
db
=
new
DBContext
();
// Context
var
mag
=
new
Magazine();
// Entity
mag
.Title
=
txtTitle.Text
;
// (fill fields)
…
db
.AddToMagazines
(
mag
);
// (add to
Entity Set)
db
.SaveChanges
();
// (save to
DataBase
)
Чтение
/
изменение объектов
var
db
=
new
DBContext
();
// Context
var
all_mags
=
db.Magazines
;
// Full Entity Set
var
my_mags
=
db.Magazines.Where
(
m
=>
m
.Publisher_Id
== 1);
// Query (
-
>Set)
mag
.Title
=
mag.Title.ToLower
();
// (modification)
var
mag
=
my_mags
.FirstOrDefault
(
m
=>
m
.Id
== 356);
// Query (
-
>Entity)
db
.SaveChanges
();
// (save to DB!)
Демонстрация
/*
по настроению
*/
Домашнее задание
на среду, 8 сентября
Установить и добиться
работоспособности:
◦
Microsoft
Visual Studio 2010
◦
Microsoft .NET Framework 4
◦
Microsoft Expression Studio 4
◦
Microsoft
SQL Server 2008 R2
See you soon!
Материалы лекции
(
презентации
и
т.п.):
http://it49.by.ru/wpf/
Контакты:
8 926 949
-
35
-
75
339
-
097
-
495
http://DreamSpark.r
u ≈
http://DreamSpark.c
om
•
Командная работа над проектами
Visual Studio Team Foundation Server
•
Браузерные и внебраузерные
десктоп
-
и веб
-
приложения
Silverlight
,
WPF
•
Публикация приложений одним
кликом
ClickOnce
•
... ... ...
Enter the password to open this PDF file:
File name:
-
File size:
-
Title:
-
Author:
-
Subject:
-
Keywords:
-
Creation Date:
-
Modification Date:
-
Creator:
-
PDF Producer:
-
PDF Version:
-
Page Count:
-
Preparing document for printing…
0%
Σχόλια 0
Συνδεθείτε για να κοινοποιήσετε σχόλιο