Форум программистов, компьютерный форум, киберфорум
C#: ASP.NET Core
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/111: Рейтинг темы: голосов - 111, средняя оценка - 4.66
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330

Архитектура построения БД linq2db

06.01.2021, 08:43. Показов 24619. Ответов 111

Студворк — интернет-сервис помощи студентам
Добрый день!

У меня вот такая задача.
Нужно создать БД CodeFirst на linq2db. (99% что это linq2db).

Эту базу будет использовать более 10 мелких приложений.

Как сделать правильно, чтобы методы выборки, создания таблици и т.д. были не конкретно в каждом приложении, а вынесены в стороннюю библиотеку?
Чтобы при изменении таблицы или выборки, не приходилось менять это во всех 10 приложениях, а только в одном месте.

Очень бы хотелось увидеть реальный пример использования.

Где посмотреть уже готовые решения на основе linq2db?
Не пример использования запросов из справки linq2db, а именно реальную архитектуру построения модели и контроллера.

Буду очень благодарен за любую помощь!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.01.2021, 08:43
Ответы с готовыми решениями:

В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу
Добрый день. При запуске программы выскакивает вот такая вот ошибка. В чем может быть проблема и как ее исправить?

архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников
сабж. кто чем может помочь юному,непонемающему в этой области человеку.желательно книгами.спасибо.

Как ускорить запрос Linq2db?
Всем привет) Использую linq2db для запросов в базу данных. Данных не много. Но очень долго работает. Не подскажете как оптимизировать...

111
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
06.01.2021, 09:17
BeginnerCoderCS, архитектура приложения использующего эту ORM ничем не отличается от архитектуры приложений с любой другой ORM. Поэтому за пример можете взять любое приложение.

Как правило, весь код по работе с СУБД выносится в отдельную сборку, которую можно переиспользовать.

Про создание таблиц я не понял, что имелось в виду. У Linq2Db нет механизма миграций. Да и почему приложение должно себе схему базы создавать. Оно должно работать с существующей.
0
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
06.01.2021, 09:54  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Как правило, весь код по работе с СУБД выносится в отдельную сборку, которую можно переиспользовать.
Можете дать ссылку на github проект? Чтобы по-проще приложение, но ни EF, ну и не на столько просто, что там как в справке только подключение к БД.

Цитата Сообщение от Usaga Посмотреть сообщение
Про создание таблиц я не понял, что имелось в виду.
При отсутствии любой из таблиц, любое приложение при подключении к БД должно их создавать.
То есть метод создания таблицы (со всеми свзями и индексами) должен быть доступен из любого приложения.
Но это всё я сделаю и сам. Меня больше интересует само взаимодействие приложения с моделью БД.

Цитата Сообщение от Usaga Посмотреть сообщение
Да и почему приложение должно себе схему базы создавать. Оно должно работать с существующей.
Уже понял, что linq2db не создаёт связи. Вчера в соседней ветке вы об этом писали.
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
06.01.2021, 10:25
BeginnerCoderCS, ссылку дать не могу. Можете поискать примеры "трёхзвенной архитектуры" и паттерна "репозиторий". Примеры с Entity Framework не будут отличаться от примеров с Linq2Db в плане архитектуры проекта. Поэтому можете смело их использовать. Единственное, что Linq2Db не имеет на борту Change Tracker'a что хорошо. Поэтому Unit of Work, на примеры которого вы тоже можете наткнуться, с ним не сочетаются.

Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
Уже понял, что linq2db не создаёт связи.
Связи?
1
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
06.01.2021, 10:41  [ТС]
Usaga, сейчас покажу код, который у меня на текущий момент. (linq2db)
Но мне не нравится, что приходится дублировать методы в каждый класс.
При создании новой таблицы, приходится копировать метод Insert, Update и менять только входные параметры метода.

Пока было штук 5 таблиц, всё устраивало, а вот при увеличении, а их будет не меньше 30, это уже хардкор.
Я понимаю что что-то не так, а вот как сделать, чтобы было так не могу придумать ((

Модель
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Table1
{
    [PrimaryKey, Identity]
    public int Id { get; set; }
    [Column]
    public string Name { get; set; }
}
 
public class Table2
{
    [PrimaryKey, Identity]
    public int Id { get; set; }
    [Column]
    public string Name { get; set; }
}


Connection
C#
1
2
3
4
5
6
7
public class MyConnection : DataConnection
{
    public MyConnection(string stringConnection) : base(ProviderName.SQLite, stringConnection) { }
 
    public ITable<Table1> Table1 { get { return GetTable<Table1>(); } }
    public ITable<Table2> Table2 { get { return GetTable<Table2>(); } }
}


Методы для каждой таблици в отдельном классе
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Table1Connection : MyConnection
{
    public Table1Connection(string stringConnection) : base(stringConnection)
    {
        CreateTableIfNotExists();
    }
 
    private void CreateTableIfNotExists()
    {
        // Реализация метода
    }
 
    public void Insert(Table1 table1)
    {
        // Реализация метода
    }
}
 
public class Table2Connection : MyConnection
{
    public Table2Connection(string stringConnection) : base(stringConnection)
    {
        CreateTableIfNotExists();
    }
 
    private void CreateTableIfNotExists()
    {
        // Реализация метода
    }
 
    public void Insert(Table2 table2)
    {
        // Реализация метода
    }
}


Объединение Таблиц для удобности вызова из приложения
C#
1
2
3
4
5
6
7
8
9
10
11
public class DBUnion
{
    public DBUnion(string stringConnection)
    {
        this.Table1 = new Table1Connection(stringConnection);
        this.Table2 = new Table2Connection(stringConnection);
    }
 
    public Table1Connection Table1;
    public Table2Connection Table2;
}


Объеднение Таблиц
C#
1
2
3
4
5
6
7
8
9
10
11
public class DBUnion
{
    public DBUnion(string stringConnection)
    {
        this.Table1 = new Table1Connection(stringConnection);
        this.Table2 = new Table2Connection(stringConnection);
    }
 
    public Table1Connection Table1;
    public Table2Connection Table2;
}


Использование в отдельном приложении
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Work
{
    public DBUnion db;
    public Work(string stringConnection)
    {
        this.db = new DBUnion(stringConnection);
    }
 
    public void MethodWorking()
    {
        var table1 = new Table1() { Id = 1, Name = "Name" };
        var table2 = new Table2() { Id = 1, Name = "Name" };
 
        db.Table1.Insert(table1);
        db.Table2.Insert(table2);
    }
}
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
06.01.2021, 11:23
BeginnerCoderCS, зачем нужны классы Table1Connection и Table2Connection? Да и DbUnion тоже что-то лишнее.

Для работы достаточно только MyConnection и всё. Не воротите лишние классы.

И ID руками тоже задавать не надо. СУБД их самостоятельно генерирует, безопасным образом.
0
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
06.01.2021, 11:57  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Для работы достаточно только MyConnection и всё. Не воротите лишние классы.
Так как в таблицах есть связи и индексы, то при создании таблиц нужно дополнительно делать запросы типа ALTER TABLE...
То есть нужно создать разные методы для создания почти всех таблиц. (Создание таблиц из кода обязательно)
Эти методы нужно делать тоже в классе MyConnection?
Все в одном классе?

p.s. Я самоучка. Это к тому, если вам кажется, что я задаю очень глупые вопросы.
Может это очевидные вещи, но я наверное ещё на них не натыкался или не понял как они работают.
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
06.01.2021, 13:54
BeginnerCoderCS, мне кажется, что вы мутное что-то делаете) Если вы берете linq2db, то получается, что схема базы данных известна заранее. Почему базу нельзя руками собрать заранее, в sqlite browser и просто положить в проект? Это же будет быстрее и проще, чем писать код
0
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
06.01.2021, 18:45  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
BeginnerCoderCS, мне кажется, что вы мутное что-то делаете) Если вы берете linq2db, то получается, что схема базы данных известна заранее. Почему базу нельзя руками собрать заранее, в sqlite browser и просто положить в проект? Это же будет быстрее и проще, чем писать код
В проектах будет использоваться и SQLite и MySQL.
И проекты заказные. У меня нет доступа ни к данным, которые там будут, ни к OS на которых это будет работать.
Вот поэтому и нужно, чтобы при запуске, проверялись таблицы и создавались в случае их отсутствия.

Нужно чтобы со стороны заказчика (пользователя) не нужно было никаких танцев с бубном.
Чтобы он запустил приложение и оно работало, а не кидало ошибки, что нет таблицы и т.д.

Но может конечно и здесь я создаю велосипед.
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
07.01.2021, 08:58
BeginnerCoderCS, в таком случае, можно написать один запрос к базе, который при запуске выполнится. В этом запросе вы будете проверять наличие нужных таблиц и создавать их. Для этого не надо писать N отдельных методов вида CreateTable для каждой таблицы.

И надо понимать, что такой запрос будет в двух вариантах, ибо диалект языка запросов у этих СУБД различается. И ещё надо понимать, что SQLite куда проще, чем MySQL, что в поддерживаемых типах, что в возможностях языка. Поэтому можно наткнуться на ситуацию, когда Linq2Db не сможет на SQLite выполнить сложный запрос, который легко выполняется на MySQL.

И третий момент: в случае с MySQL приложение должно иметь полный доступ к СУБД, с правами админа. Иначе оно не сможет изменять схему. А это трындец как небезопасно. Просто огроменная дырень в безопасности. Тут правильнее одно из двух: или приложение должно ставиться инсталлятором, которому такие права предоставят, но он отрабатывает один раз, или пользователю даётся файл SQL-скрипта, который он сам выполнит в СУБД и получит схему базы, а ваше приложение будет работать с обычным уровнем привилегий.
1
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
08.01.2021, 12:00  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Для этого не надо писать N отдельных методов вида CreateTable для каждой таблицы.
Почему? Если таблицы будут со связями, то linq2db не создаст сам связи, и нужно будет создавать доп запросы типа `ALTER TABLE...`.
Или я так и не понимаю как работает linq2db?

Цитата Сообщение от Usaga Посмотреть сообщение
Тут правильнее одно из двух: или приложение должно ставиться инсталлятором
Это точно не подходит.

Цитата Сообщение от Usaga Посмотреть сообщение
пользователю даётся файл SQL-скрипта, который он сам выполнит в СУБД и получит схему базы
База будет расти с каждым новым приложением или обновлением приложения. Полная схема конечных данных ещё не известна толком.
Тогда клиенту нужно постоянно передавать SQL-скрипт и научить его этим заниматься? Но ему это не нужно. Он просто хочет чтобы всё работало.
Или как это делать правильно?
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
08.01.2021, 12:13
Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
Почему? Если таблицы будут со связями, то linq2db не создаст сам связи, и нужно будет создавать доп запросы типа `ALTER TABLE...`.
Или я так и не понимаю как работает linq2db?
Я не понимаю о каких связях речь идёт. Что за связи?

Я в вашем примере кода видел два класса, явно каждый под свою таблицу. В каждом видел метод CreateTable. И своей фразой выше я имел в виду, что это не нужно. Просто не нужно. Достаточно одного SQL-скрипта (который из кода можно выполнить), не привязанного ни к какой таблице, который пройдётся по базе и проверит наличие всех таблиц. А лучше, какой-то одной потому, что вряд ли кто-то будет специально ходить и выборочно таблицы из базы удалять. Если одной проверяемой таблицы нет, то делаем вывод, что и всех остальных нет и всю базу нужно создавать. Если проверяемая таблица есть, то делаем вывод, что вся база создана. Всё.

Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
Тогда клиенту нужно постоянно передавать SQL-скрипт и научить его этим заниматься?
Кто-то должен это делать. Или насталлятор, или клиент, или вы. Но что клиенту точно не нужно, так это дыра в безопасности в виде полных прав на изменение схемы базы.
0
800 / 583 / 207
Регистрация: 21.02.2019
Сообщений: 2,095
08.01.2021, 12:42
BeginnerCoderCS,
..а вы не думали о том, что может быть в вашем варианте, если уж пользователь не хочет запускать инсталлятор обновления/добавления, то есть смысл пересмотреть архитектуру БД и не плодить таблицы при каждом чихе, а создать, например, мастер-таблицу сущностей, а данные этих сущностей хранить в уже существующих таблицах, разделяя их по Id ... тогда и не нужно будет добавлять таблицы и создавать новые связи? ...
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
08.01.2021, 12:49
carrotik, это какое-то странное решение. Которое, к тому же, вызовет сложности в работе и использовании тех же ORM. Надёжнее и проще явно схему базы изменять. Не вижу профитов от такого решения с мастер-таблицей.
0
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
08.01.2021, 12:54  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Я не понимаю о каких связях речь идёт. Что за связи?
Какие атрибуты нужно прописать классам, чтобы linq2db понимал связи между таблицами БД?

Для примера. Есть 3 таблицы.
Диаграмма


SQL запросы создания таблиц
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
CREATE TABLE `Country` (
    `Id` INT(11) NOT NULL AUTO_INCREMENT,
    `Name` VARCHAR(60) NOT NULL COLLATE 'utf8mb4_0900_ai_ci',
    PRIMARY KEY (`Id`) USING BTREE,
    UNIQUE INDEX `Name` (`Name`) USING BTREE
);
 
 
CREATE TABLE `City` (
    `Id` INT(11) NOT NULL AUTO_INCREMENT,
    `Name` VARCHAR(60) NOT NULL COLLATE 'utf8mb4_0900_ai_ci',
    `CountryId` INT(11) NOT NULL,
    PRIMARY KEY (`Id`) USING BTREE,
    UNIQUE INDEX `Name` (`Name`) USING BTREE,
    INDEX `FK_City_CountryId` (`CountryId`) USING BTREE,
    CONSTRAINT `FK_City_CountryId` FOREIGN KEY (`CountryId`) REFERENCES `Country` (`Id`) ON UPDATE CASCADE ON DELETE CASCADE
);
 
 
CREATE TABLE `User` (
    `Id` INT(11) NOT NULL AUTO_INCREMENT,
    `Name` VARCHAR(60) NOT NULL COLLATE 'utf8mb4_0900_ai_ci',
    `CountryId` INT(11) NOT NULL,
    `CityId` INT(11) NOT NULL,
    PRIMARY KEY (`Id`) USING BTREE,
    UNIQUE INDEX `Name` (`Name`) USING BTREE,
    INDEX `FK_User_CountryId` (`CountryId`) USING BTREE,
    INDEX `FK_User_CityId` (`CityId`) USING BTREE,
    CONSTRAINT `FK_User_CountryId` FOREIGN KEY (`CountryId`) REFERENCES `Country` (`Id`) ON UPDATE CASCADE ON DELETE CASCADE,
    CONSTRAINT `FK_User_CityId` FOREIGN KEY (`CityId`) REFERENCES `City` (`Id`) ON UPDATE CASCADE ON DELETE CASCADE
);


C# Классы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public class Country
{
    [PrimaryKey, Identity]
    public int Id { get; set; }
    [Column]
    public string Name { get; set; }
}
 
public class City
{
    [PrimaryKey, Identity]
    public int Id { get; set; }
    [Column]
    public string Name { get; set; }
    [Column]
    public int CountryId { get; set; }
}
 
public class User
{
    [PrimaryKey, Identity]
    public int Id { get; set; }
    [Column]
    public string Name { get; set; }
    [Column]
    public int CountryId { get; set; }
    [Column]
    public int CityId { get; set; }
}
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
08.01.2021, 13:12
Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
Какие атрибуты нужно прописать классам, чтобы linq2db понимал связи между таблицами БД?
Я уже говорил - Association. В примерах же этот момент есть.

Добавлено через 5 минут
Более того: Linq2Db не обязан знать о таких связах. Вы можете в запросах вручную JOIN'ы делать, если надо, по любым критериям, а не только по связке Внешний Ключ - ID.
0
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
08.01.2021, 13:14  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Я уже говорил - Association. В примерах же этот момент есть.
Не могу понять как оно работает ((

Хоть одну связь покажите на реальном примере пожалуйста
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
08.01.2021, 13:29
BeginnerCoderCS,

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Country
{
    [PrimaryKey, Identity]
    public int Id { get; set; }
    [Column]
    public string Name { get; set; }
}
 
public class City
{
    [PrimaryKey, Identity]
    public int Id { get; set; }
    [Column]
    public string Name { get; set; }
    [Column]
    public int CountryId { get; set; }
    [Association(ThisKey = nameof(CountryId), OtherKey = nameof(Country.Id)]
    public Country { get; set; }
}
Добавлено через 5 минут
Причём в County тоже можно связь прописать к множеству городов. Т.е. этот атрибут поддерживает как один-к-одному, так и один-ко-многим с обоих сторон.
1
9 / 6 / 3
Регистрация: 10.01.2020
Сообщений: 330
09.01.2021, 00:25  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
[Association(ThisKey = nameof(CountryId), OtherKey = nameof(Country.Id)]
    public Country { get; set; }
Тут нужно как я понял добавить имя для свойства
C#
1
2
[Association(ThisKey = nameof(CountryId), OtherKey = nameof(Country.Id)]
public Country CountryProperty{ get; set; }
Какой вообще результат должен быть от "Association"?
При создании таблицы foreign key не создаётся. Это ладно, буду создавать отдельно.

Insert вот так работает хоть с Association, хоть вообще без Association.

C#
1
2
3
4
5
var city = new City();
city.Name = "Город";
city.CountryId = db.GetTable<Country>().Where(x => x.Name.Equals("Страна")).FirstOrDefault().Id;
 
db.Insert<City>(city);
Это же должно как-то помогать при запросах?
Что я всё время делаю не так?

Скачал полностью с github все исходники, загрузилось миллион зависимостей, в том числе net sdk всех версий, и в итоге 751 ошибка в коде.
Пока пользовался этим linq2db на примитивном уровне было всё норм, а как что-то серьёзнее, то вообще не отстрелю что с ним делать.

Я на столько расстроен, что мне эго уже говорит, что это не я туплю, это оно так и работает.
0
Эксперт .NET
 Аватар для Usaga
14090 / 9308 / 1348
Регистрация: 21.01.2016
Сообщений: 34,956
09.01.2021, 08:36
Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
Какой вообще результат должен быть от "Association"?
Возможность выгружать записи из связанных таблиц или использовать эти таблицы в предикате.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// Выгружаем City вместе со связанным County
var city = db.GetTable<City>()
    .LoadWith(x => x.Country)
    .Where(x => x.Name == "Московия")
    .FirstOrDefault();
 
// Выгружаем проекцию городов, где только название города и страны
public class CityDTO
{
   public string City { get; set; }
   public string County { get; set; }
}
 
var citiesDto = db.GetTable<City>()
    .Select(x => new CityDTO
    {
        City = Name,
        Country = x.County.Name
    })
    .ToList();
 
// Выгружаем все названия городов определённой страны
var usaCities = db.GetTable<City>()
    .Select(x => x.Name)
    .Where(x => x.Country.Name == "USA")
    .ToList();
Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
При создании таблицы foreign key не создаётся.
Вообще, создаётся. При определении таблицы (CREATE TABLE) и все его констрейнты можно определить не отходя от кассы.

Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
Что я всё время делаю не так?
Не читаете документацию.

Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
Скачал полностью с github все исходники, загрузилось миллион зависимостей, в том числе net sdk всех версий, и в итоге 751 ошибка в коде.
Зачем? Что вы пытались сделать? Linq2Db подключается к проекту с помощью NuGet-пакета. Если вы сами хотите собрать LInq2Db, то с этим тоже проблем нет никаких. Я это делал спокойно, только тесты не надо собирать, там могут быть проблемы. Но для использования LInq2Db вам исходники этой библиотеки не нужны.

Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
Я на столько расстроен, что мне эго уже говорит, что это не я туплю, это оно так и работает.
Оно нормально работает. Как надо и без танцев с бубном. Только надо документацию читать и примеры использования смотреть.

Добавлено через 3 минуты
Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
db.GetTable<Country>().Where(x => x.Name.Equals("Страна")).FirstOrDefault( ).Id;
А вот так делать не надо. Иначе вы резко пополните ряды людей, что кричат о тормознутости ORM'ок. Если вам нужно только поле ID, то только это поле и запрашивайте (методом Select). Вы же, когда с голым SQL работает, не делаете SELECT * FROM, когда вам всего одно поле нужно?

Добавлено через 28 минут
Цитата Сообщение от BeginnerCoderCS Посмотреть сообщение
public Country CountryProperty{ get; set; }
Без "Property". Оно и так понятно, что это свойство.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2021, 08:36
Помогаю со студенческими работами здесь

Linq2db как изменить имя таблицы?
При описании класса таблицы атрибутом указывается имя таблицы. Например: //Здесь указывается имя таблицы public partial...

Запрос linq2db c условием разницы времени
Здравсвуйте) Испльзую орм linq2db. И у меня такой запрос: найти заказы которые выполнялись более одного дня orders = (from s in orders...

Как мне понастроить linq2db в .NET Core?
Зашёл в документацию по подключению к базе данных. Это сделал. public class ConnectionStringSettings : IConnectionStringSettings { ...

Как сохранить изменения сделанные в DataGridView в БД при использовании linq2db?
Заполнить dataGridView у меня получилось: using (DBSystem dbSystem = new DBSystem()) { bindingSource1.DataSource =...

linq2db.mysql - No PK is defined or all fields are keys при обновлении строки из формы
Приветствую Всех форумчан!!! Пытаюсь разобраться с linq2db, не могу понять следующее. есть вот такая табличка: CREATE TABLE...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 05.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru