2 Нововведения .NET и C# §3 Entity Framework

italiansaucySoftware and s/w Development

Dec 13, 2013 (3 years and 8 months ago)

127 views

§
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



... ... ...