Основанная на документе база данных для [закрытой].NET

Я хотел бы видеть возможность для функции включать произвольное количество параметров ссылки и передавать их через вызов вложенной функции. В .net это можно сделать для любого фиксированного числа универсальных параметров, используя что-то вроде (показана версия с двумя дополнительными параметрами):

// I forget the C# syntax for delegates, since I normally code in vb
delegate void RefAction<T1, T2, T3>(ref T1 p1, ref T2 t2, ref T3 p3);

Point myPoints[];

void DoSomethingWithIndexedPoint<XT1, XT2>(int index, 
  RefAction<Point, XT1, XT2) theAction, 
  ref XT1 xp1, 
  ref XT2 xp2)
{
  theAction(myPoints[index], xp1, xp2);  
}

Мой предпочтительный синтаксис будет выглядеть примерно так:

delegate void RefAction<T1, T2, T3>(ref T1 p1, ref T2 t2, ref T3 p3);

Point myPoints[];

void DoSomethingWithIndexedPoint<ref ...>(int index, 
  RefAction<Point, ref ...>, ref ...) theAction, 
  ref XT1 xp1, 
  ref XT2 xp2)
{
  theAction(myPoints[index], ...);  
}

где "..." будет автоматически расширяться компилятором любым подходящим способом. Такая возможность позволила бы использовать Lambdas во многих ситуациях без необходимости генерировать экземпляры замыкания, а также позволяла бы делать код наподобие:

  Interlocked.CompareExchange(SomeObject["George"], SomeValue, SomeOtherValue);

, который компилятор мог бы переписать как нечто похожее на:

  SomeObject.ActUponProperty("George",
    (ref dest, ref p1, ref p2) => {Interlocked.CompareExchange(dest, p1, p2);},
    SomeValue, SomeOtherValue);

Обратите внимание, что поскольку лямбда-выражение не будет использовать никаких элементов или переменных экземпляра, кроме тех, которые передаются в качестве параметров ref, оно может быть реализовано как статическая функция и не должно создавать замыкание.

5
задан Community 22 September 2017 в 18:01
поделиться

4 ответа

Я главный автор драйвера .Net для Mongo. В настоящее время для него еще нет ORM-подобного картографа. Вместо этого он работает с простыми документами, которые являются эквивалентом словаря. Это не было бы Трудно использовать отражение для перебора полей в документе и присвоения их свойствам объекта. Я уже писал такую ​​простую вещь для результатов LDAP в прошлом. Вам не нужно беспокоиться о внедрении sql с помощью Mongo, поскольку на самом деле нет языка запросов, который анализируется. Все водители разговаривают с Mongo на его родном языке. Есть некоторый потенциал, если вы динамически генерируете javascript и отправляете его в БД, но потребность в этом в основном должна быть редкой. Если у вас есть какие-либо вопросы по использованию драйвера, опубликуйте их в группе Google или отправьте сообщение через GitHub.

Все водители разговаривают с Mongo на его родном языке. Есть некоторый потенциал, если вы динамически генерируете javascript и отправляете его в БД, но потребность в этом в основном должна быть редкой. Если у вас есть какие-либо вопросы по использованию драйвера, опубликуйте их в группе Google или отправьте сообщение через GitHub.

Все водители разговаривают с Mongo на его родном языке. Есть некоторый потенциал, если вы динамически генерируете javascript и отправляете его в БД, но потребность в этом в основном должна быть редкой. Если у вас есть какие-либо вопросы по использованию драйвера, опубликуйте их в группе Google или отправьте сообщение через GitHub.

2
ответ дан 14 December 2019 в 13:40
поделиться

Вы можете подключаться к текстовым файлам с помощью ADO.NET и читать / записывать их с помощью синтаксиса SQL и команд, выдаваемых через ADO.NET. В этой статье есть пример . Ваши данные будут храниться в удобочитаемом формате в формате записи с разделителями-запятыми или табуляциями. Конечно, с большими наборами данных это не будет быстро. Я не уверен, пытаетесь ли вы уйти от баз данных SQL и синтаксиса SQL. Решения с текстовыми файлами могут быть запрошены с помощью SQL.

Вы также можете сделать то же самое с электронными таблицами Excel, рассматривая их как источники данных SQL (хотя они и не являются) через доступ ADO.NET.

1
ответ дан 14 December 2019 в 13:40
поделиться

MongoDB не использует магические строки, но использует документы запросов для представления запросов. Также доступен драйвер C # с открытым исходным кодом . Я не уверен в специфике драйвера C #, но относительно легко добавить слой проверки поверх него, если он еще не существует. Например, есть аналогичные проекты поверх драйверов в Python и Ruby.

1
ответ дан 14 December 2019 в 13:40
поделиться

Не уверен, что это то, что вы ищете, но вы можете попробовать http://www.db4o.com/ Я никогда не использовал его, но может помочь вам

1
ответ дан 14 December 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: