Top Banner
Micro-ORM для жизни Кожевников Дмитрий .NET Developer ПАО Росбанк
100

Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

Apr 15, 2017

Download

Technology

dev2devConf
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

Micro-ORM для жизни

Кожевников Дмитрий.NET DeveloperПАО Росбанк

Page 2: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

2

Это я

• Кожевников Дмитрий• ПАО Росбанк (скоро AstroSoft)• .NET Enterprise 5 лет• Спикер dev2dev, dotnetconf, devday• [email protected]

Page 3: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

3

Page 4: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

4

ORM

Page 5: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

5

Пример - Сущность

Page 6: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

6

ADO.NET Mapping

Page 7: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

7

ADO.NET Mapping

Page 8: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

8

ADO.NET Mapping

Page 9: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

9

ADO.NET Mapping

Page 10: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

10

ADO.NET Mapping

Page 11: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

11

ADO.NET Mapping

Page 12: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

12

ADO.NET Mapping

Page 13: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

13

.Net ORM

Page 14: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

14

Nuget-социология№ Package Downloads1 EntityFramework 6.1.3 2 414 6892 Nhibernate 3.3.3.4 (8.09.2013) 223 7633 Dapper 1.42 220 9964 Simple.Data 0.19.0 (10.12.2013) 46 6005 Linq2db 1.0.7.3 4 5126 NPoco 2.10.11 3 4187 OrmLite 4.0.52 2 196

Page 15: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

15

Крутые пацаны

Page 16: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

16

ADO.NET Mapping

Page 17: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

17

ORM way (Entity Framework)

Page 18: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

18

Entity Framework Context

Page 19: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

19

Entity Framework Context

Page 20: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

20

Entity Framework Context

Page 21: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

21

Entity Framework Context

Page 22: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

22

ORM way (Entity Framework)

Page 23: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

23

EF SQL

Page 24: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

24

ORM way (NHibernate)

Page 25: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

25

NHibernate Configuration

Page 26: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

26

NHibernate SQL

Page 27: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

27

NHibernate constraints

Page 28: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

28

Heavy-ORM features

• O/R Mapping• Генерация SQL• Object Model <= => DB Scheme• Ассоциации• Lazy Loading• Миграции• Change Tracking

Page 29: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

29

Heavy ORM fails

• LINQ != SQL• Bulk insert, update, delete• Oracle Sequence, stored procedures• Analytical functions

Page 30: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

30

ORM-Hate

http://martinfowler.com/bliki/OrmHate.html

Page 31: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

31

Что делать?

• Расширение фреймворка• ADO.NET остров• Micro-orm (<= мне нравится это вариант)• NoSql

Page 32: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

32

ORM-way Dapper

Page 33: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

33

ORM-way Dapper

Page 34: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

34

ORM-way Dapper

Page 35: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

35

ORM-way Dapper

Page 36: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

36

ORM-way Dapper

Page 37: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

37

ORM-way Dapper

Page 38: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

38

ORM-way Dapper

Page 39: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

39

Dapper - Основные методы

Page 40: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

40

Dapper - Запрос в объекты

Page 41: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

41

Dapper - Запрос в объекты

Page 42: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

42

Dapper - Запрос в объекты

Page 43: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

43

Dapper - Запрос в объекты

Page 44: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

44

Dapper Запрос ассоциаций

Page 45: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

45

Dapper Запрос ассоциаций

Page 46: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

46

Dapper Запрос ассоциаций

Page 47: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

47

Dapper Запрос ассоциаций

Page 48: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

48

Dapper Запрос ассоциаций

Page 49: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

49

Dapper – QueryMultiple

Page 50: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

50

Dapper – QueryMultiple

Page 51: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

51

Dapper – QueryMultiple

Page 52: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

52

Dapper – QueryMultiple

Page 53: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

53

Dapper – QueryMultiple

Page 54: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

54

Dapper – Bulk Insert

Page 55: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

55

Dapper – Bulk Insert

Page 56: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

56

Dapper – Bulk Insert

Page 57: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

57

Dapper – Bulk Insert

Page 58: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

58

Dapper – Bulk Insert

Page 59: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

59

Dapper – Bulk Insert

Page 60: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

60

Dapper – Bulk Insert

Page 61: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

61

Dapper – Bulk Update\Delete

Page 62: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

62

Итоги о Dapper

• Быстрый• SQL-ориентированный• Простой• Чистый O/R Mapping

Page 63: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

63

Page 64: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

64

Dapper - простой

• Простой API• Работа с IDbConnection, IDbTransaction• Convention over Configuration• Небольшой open-source проект

Page 65: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

65

Page 66: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

66

Page 67: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

67

Dapper маппит запросы

Page 68: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

68

Dapper маппит параметры

Page 69: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

69

Page 70: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

70

Dapper скромный

• Не скрывает БД• Не генерирует SQL• Не управляет соединениями• Не управляет транзакциями

Page 71: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

71

Ниша

• Много мелких запросов• Сложные SQL запросы• Интеграционные решения• Приложение вторичные к БД• Демонстрационные приложения

Page 72: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

72

О проблемах

• Генерация SQL• Трекинг изменений• Поддержка Linq

Page 73: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

73

Экосистема Dapper

Page 74: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

74

Генерация SQL

Page 75: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

75

Dapper.Contrib

Page 76: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

76

Dapper.Contrib Сущность

Page 77: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

77

Dapper.Contrib Сущность

Page 78: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

78

Dapper.Contrib Get<>()

Page 79: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

79

Dapper.Contrib SQL

Page 80: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

80

Dapper.Contrib ChangeTracking

Page 81: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

81

Dapper.Contrib ChangeTracking

Page 82: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

82

Dapper.Rainbow

Page 83: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

83

Dapper.Rainbow

Page 84: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

84

Dapper.Rainbow Database<T>

Page 85: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

85

Dapper.Rainbow

Page 86: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

86

Dapper.Rainbow Table<T>

Page 87: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

87

Dapper.Rainbow Get<>()

Page 88: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

88

Dapper.Rainbow SQL

Page 89: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

89

Page 90: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

90

SqlGun

Page 91: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

91

Dapper совсем не против EF

Page 92: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

92

Dapper.EntityFramework.Extenstions

Page 93: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

93

Dapper.EntityFramework.Extenstions

Page 94: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

94

Поддержка LINQ

Page 95: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

95

Поддержка LINQ

Page 96: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

96

Ссылки на исходные коды

• https://github.com/StackExchange/dapper-dot-net

• https://github.com/thiagoamarante/Dapper.EntityFramework.Extensions

Page 98: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

98

EnityFramework raw SQL

Page 99: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

99

NHibernate raw SQL

Page 100: Micro orm для жизни. Кожевников Дмитрий D2D Just.NET

100

Спасибо за внимание!

Кожевников Дмитрий[email protected]