Используя которую технологию базы данных я мог сохранить объекты? (Что-то, что НЕ требует, чтобы я заботился об отображении объектов к таблицам и назад)?

Хотя ASP.NET MVC позволит вам иметь два действия с одним и тем же именем, .NET не позволит вам иметь два метода с одинаковой сигнатурой, то есть с одинаковым именем и параметрами.

Вам нужно будет называть методы по-разному, используя атрибут ActionName, чтобы сообщить ASP.NET MVC, что на самом деле это одно и то же действие.

Тем не менее, если вы говорите о GET и POST, эта проблема, скорее всего, исчезнет, ​​поскольку действие POST будет принимать больше параметров, чем GET, и, следовательно, будет различимым. [11] 1110]

Итак, вам нужно:

[HttpGet]
public ActionResult ActionName() {...}

[HttpPost, ActionName("ActionName")]
public ActionResult ActionNamePost() {...}

Или:

[HttpGet]
public ActionResult ActionName() {...}

[HttpPost]
public ActionResult ActionName(string aParameter) {...}
5
задан Cœur 6 August 2017 в 17:26
поделиться

6 ответов

I would go with Hibernate. Simply because it has so vast community. Yes, I have a lot of (good) experience with Hib personally, so I'm biased.

As for versioning, well, implement it yourself -- it's not hard, just make a copy (reflection is a helper), and save the object.

0
ответ дан 14 December 2019 в 04:45
поделиться

You could also look into using JPA's. While they aren't the hottest thing since sliced bread, they are being adopted by the Java community and are being pushed as the new standard by the Sun community. Hibernate is safe and proven though, so I personally am going to stick with it.

0
ответ дан 14 December 2019 в 04:45
поделиться

Попробуйте NeoDatis . В нем есть все достоинства db4o (собственные запросы, без сопоставлений, быстро), за исключением того, что он полностью бесплатный (даже для коммерческого использования).

ОБНОВЛЕНИЕ : В последний раз, когда я пробовал NeoDatis (середина 2010 г.), он все еще оставался критические ошибки. Например, отключение питания может привести к повреждению базы данных. Осторожно!

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

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

Теперь подумайте о новой функции D = расстояние между двумя точками в пространстве 60D. Это классическое расстояние L2 , возьмите разность каждого компонента, возведите каждую в квадрат, сложите все квадраты и извлеките квадратный корень из суммы. D (A, B) = sqrt ((AB) ^ 2), где A и B - каждый по 60 размерных векторов.

Однако это можно расширить до D (A, B) = sqrt (A * A -2 * точка (A, B) + B * B). Значит, А и В - единичная величина. А функция D монотонна, поэтому она не изменит порядок сортировки, если мы удалим sqrt () и посмотрим на квадраты расстояний. Остается только -2 * точка (A, B). Таким образом, расстояние минимизации в точности эквивалентно максимизации скалярного произведения.

Таким образом, исходная метрика классификации T () может быть упрощена до нахождения наивысшего скалярного произведения между норнализованными векторами. И это сравнение показано эквивалентным нахождению ближайших точек к точке выборки в пространстве 60D.

Теперь все, что вам нужно сделать, это решить эквивалентную задачу «с учетом нормализованной точки в 60D. пробел, перечислите 20 точек в базе данных нормализованных векторов выборок, которые являются ближайшими к нему. "

Эта проблема хорошо изучена ... это K ближайших соседей. Есть много алгоритмов решения этой проблемы. Наиболее распространены классические деревья KD. .

Но есть проблема. Деревья KD имеют поведение O (e ^ D) ... высокая размерность быстро становится болезненной. И 60 измерений определенно относятся к этой крайне болезненной категории. Даже не пытайтесь.

Однако есть несколько альтернативных общих методов для ближайшего соседа с высоким D. Эта статья дает ясный метод.

Но на практике есть отличное решение, включающее еще одно преобразование. Если у вас есть метрическое пространство (которое у вас есть, или вы бы не использовали сравнение Танимото), вы можете уменьшить размерность проблемы с помощью поворота на 60 измерений. Это звучит сложно и пугающе, но это очень распространено ... это форма разложения по сингулярным значениям или разложения по собственным значениям. В статистике он известен как Анализ главных компонентов.

В основном он использует простое линейное вычисление, чтобы определить, в каких направлениях действительно простирается ваша база данных. Вы можете свернуть 60 измерений до меньшего числа, возможно, до 3 или 4, и при этом иметь возможность точно определять ближайших соседей. Для этого существует масса программных библиотек на любом языке, см. здесь , например.

Наконец, вы сделаете классический K ближайших соседей, вероятно, только в 3-10 измерениях .. вы можете экспериментировать для лучшего поведения. Для этого есть замечательная библиотека под названием Ranger , но вы можете использовать и другие библиотеки. Большим дополнительным преимуществом является то, что вам даже больше не нужно хранить все 60 компонентов ваших выборочных данных!

Тяжелый вопрос заключается в том, действительно ли ваши данные могут быть свернуты до более низких размеров, не влияя на точность результатов. На практике разложение PCA может сказать вам максимальную остаточную ошибку для любого выбранного вами предела D, поэтому вы можете быть уверены, что это работает. Поскольку точки сравнения основаны на метрике расстояния, весьма вероятно, что они сильно коррелированы,

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

db4o - объектно-ориентированная база данных.

4
ответ дан 14 December 2019 в 04:45
поделиться

DB4o и Neodatis - это то, что вам нужно ...

Я думаю, вам понадобится коммерческая лицензия, если ваш проект направлен на получение прибыли .... Если это так, используйте neodatis ....

0
ответ дан 14 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

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