@Fsharp_chat

Страница 181 из 772
Anton
31.05.2017
09:19:03
спасибо что отвечается на нубские вопросы



Я просто скачал с нугета пакет и всё...

Vasily
31.05.2017
09:20:28
Это не тот провайдер

Google
Friedrich
31.05.2017
09:21:10
Это не тот провайдер
Как не тот? Это как раз тот.

Vasily
31.05.2017
09:21:27
Это из FSharp.data

Anton
31.05.2017
09:21:36


Friedrich
31.05.2017
09:21:42
Это из FSharp.data
Да нет же, это пакет SQLProvider.

У него DLL именно так называется, я только что скачал с нугета и проверил :)

Vasily
31.05.2017
09:22:12
А, тогда версия фреймворка не та

Friedrich
31.05.2017
09:22:16
Бахни 4.5.1

Vasily
31.05.2017
09:22:23
Лучше 4.6.1

Anton
31.05.2017
09:23:18
ок

собралось и подключилось

буду разбираться, как подключиться к базе

Vasily
31.05.2017
09:26:21
connection string в помощь

Anton
31.05.2017
09:39:47
я не могу понять - оно подключилось или нет. По крайне мере моих таблиц там почему-то нет, в интеллисенсе.

Google
Vasily
31.05.2017
09:40:03
База та?

Anton
31.05.2017
09:40:32
да

код собирается, ничего не ругается

ха, вот поменял ip ради интереса - сразу на билде ругнулось... Хорошо, значит куда-то оно всё же подключается.

Vasily
31.05.2017
09:42:45
Ну я с mysql не работал

Поэтому ничего не могу сказать

C mssql разбирался, почему таблицы не видит

Но это чисто ms фишка

Anton
31.05.2017
09:43:36
хм

Убрал owner'а и заработало :D

@nevoroman а можно теперь получить типы каждой таблицы и на их осново создавать записи ?

Что бы вручную не создавать эти энтити

Vasily
31.05.2017
09:52:35
Там же все в документации есть

Anton
31.05.2017
09:52:44
нууу, они там пишут типы руками...

разве тайп провайдер не должен их генерировать на ходу?

Vasily
31.05.2017
09:53:20
Не вижу, где они там руками пишут

Anton
31.05.2017
09:53:25
https://fsprojects.github.io/SQLProvider/core/crud.html

type Employee = { FirstName:string LastName:string }

Vasily
31.05.2017
09:53:39
Вот прям в начале читаю

Anton
31.05.2017
09:53:49
там про вставку листа

Google
Anton
31.05.2017
09:53:54
insert a list of records:

Vasily
31.05.2017
09:53:55
let row = orders.Create()

И читаем внимательнее

mvps1 |> List.map (fun x -> let row = employees.Create() row.FirstName <- x.FirstName row.LastName <- x.LastName) ctx.SubmitUpdates()

Рекорды тут типа dto

Anton
31.05.2017
09:55:17
хммм

Vasily
31.05.2017
09:55:23
Энтити уже все созданы

Or directly specify the fields:

И ниже

Все ок там

Anton
31.05.2017
09:56:23
т.е я просто вызываю 1 раз Create() и после могу в мапе жахнуть то что от туда мне пришло? Удобно.

Vasily
31.05.2017
09:56:48
Не, на каждый dto надо Create вызвать

Anton
31.05.2017
09:57:28
хотя не, они тут всетаки используют тип самописный и на его основе создают лист type Employee = { FirstName:string LastName:string } let mvps1 = [ {FirstName="Andrew"; LastName="Kennedy"}; {FirstName="Mads"; LastName="Torgersen"}; {FirstName="Martin";LastName="Odersky"}; ]

хм, что-то я не понял...

Vasily
31.05.2017
09:58:03
У тебя есть dto, есть entity

dto они создают руками

entity через Create

потом мапят

Anton
31.05.2017
09:58:35
ну да, вижу вот такую конструкцию mvps2 |> List.map (fun x -> employees.Create(x.FirstName, x.LastName) )

Vasily
31.05.2017
09:59:05
Ну и что в ней непонятно?

Google
Anton
31.05.2017
09:59:06
Меня смущает, что типы создают ручками type Employee = { FirstName:string LastName:string }

Vasily
31.05.2017
09:59:11
Это dto

Внешние данные

Они никогда не создаются автоматом

Anton
31.05.2017
09:59:38
а dto можно получить автоматом через тайп-провайдер ? =)

Vasily
31.05.2017
09:59:46
Нельзя

Anton
31.05.2017
09:59:48
если у меня к примеру 1 в 1 св-ва

Friedrich
31.05.2017
09:59:57
Можно вообще без DTO, если тебе не нужно DTO.

Vasily
31.05.2017
09:59:58
Он Erased

Ну или можно без dto

Но dto - это контракт, пойми

Anton
31.05.2017
10:00:21
@fvnever смотри, мне нужно сгенерить 10000 юзеров =)

Vasily
31.05.2017
10:00:36
Рассматривай dto как правило генерации

Anton
31.05.2017
10:00:39
и к ним файлов эдак на 2-4 гига

Friedrich
31.05.2017
10:01:50
Но dto - это контракт, пойми
У него тренировочная какая-то задача, можно пока не заморачиваться.

Anton
31.05.2017
10:02:13
у меня даже не тренировочная - а тестовая

Vasily
31.05.2017
10:02:33
Я тогда вопроса не понял

Anton
31.05.2017
10:02:36
мне базу нужно заполнить и придумать, как делать систему бекапов, что бы не лочить всю БД в этот момент

Vasily
31.05.2017
10:02:46
Ну заполняй

Что мешает-то?

Google
Anton
31.05.2017
10:02:51
F# просто как инструмент =)

Vasily
31.05.2017
10:02:56
Create есть

Anton
31.05.2017
10:02:59
угу

сейчас буду

Vasily
31.05.2017
10:03:10
Как внешние данные запихнуть, сообразишь, думаю

Anton
31.05.2017
10:03:15
угу

там на сайте есть

единственное, я в печали, что нету интерполяции строк.

Vasily
31.05.2017
10:03:55
Тебе зачем?

Есть sprintf

Anton
31.05.2017
10:04:36
я хотел жахнуть типо так [0..1000] |> List.Map (fun i -> db.Users.Create("User_{i}") )

Vasily
31.05.2017
10:05:12
[0.1000] |> List.Map (fun i -> db.Users.Create(sprintf "User_%d" i) )

Friedrich
31.05.2017
10:05:25
+

Vasily
31.05.2017
10:05:48
Точнее так

Friedrich
31.05.2017
10:05:55
Это самую малость печалит, но не так критично, как в C#. Потому, что синтаксис для sprintf проверяется во время компиляции.

Vasily
31.05.2017
10:06:16
i|>sprintf "User_%d"|>db.Users.Create

Anton
31.05.2017
10:06:23
Vasily пасибо

Vasily
31.05.2017
10:06:30
Пжлст

Это я ща прокрастинирую

Верстая сраный WebForms

Anton
31.05.2017
10:07:13
стоп, я не понял i|>sprintf "User_%d"|>db.Users.Create

это после map ?

Страница 181 из 772