Linq к SQL: лучше иметь небольшой DataContext для каждой страницы или глобальной?

Вы хотите использовать Physics.ComputePenetration(). Его можно использовать для определения немного большего, чем просто они пересекаются, но если это все, что вам нужно, он отлично справляется со своей работой.

https://docs.unity3d.com/ScriptReference/Physics.ComputePenetration.html

Передайте ему правильные аргументы, и он вернет true, если коллайдеры перекрываются. [ 115]

Пример:

BoxCollider box1; //first collider
BoxCollider box2; //second collider
float distance; //how far they need to move apart
Vector3 direction; //which direction they need to move apart in
bool hasCollided = ComputePenetration(  box1, box1.transform.position, box1.transform.rotation, 
                                        box2, box2.transform.position, box2.transform.rotation, 
                                        out direction, out distance);

9
задан Mark Brittingham 10 January 2009 в 14:36
поделиться

3 ответа

У Вас должен быть один DataContext на одну группу связанных таблиц. В большинстве приложений это означает один DataContext для всего. Если у Вас, оказывается, есть несколько наборов таблиц, которые Вы не должны изменять вместе, Вы могли бы рассмотреть несколько DataContexts. Если Вы даже, возможно, должны были бы запросить через DataContexts, не разделяйте их.

DataContext не является просто рядом таблиц - он предназначен, чтобы быть реализацией шаблона Шлюза Данных - можно заполнить его методами, которые возвращают данные, в которых Вы нуждаетесь, таким образом, Вы не имеете к запросам hardcode в каждый угол Вашего приложения. Теперь, если бы у Вас было несколько DataContexts, один на страницу, то Вы очень вероятно закончили бы тем, что имели необходимость придерживаться, Ваша общая функциональность (думайте MyDataContext. GetActiveCustomers ()) в каждых из них. Это было бы ужасным дублированием.

Таким образом, ответ - то, что это обычно не хорошо для создания многих небольших DataContexts. Это только выполнимо, если Ваши данные являются абсолютно отдельными (различные логические или физические базы данных) или если Вы используете DataContext как просто объект Соединения, которым это не предназначено, чтобы быть.

Действительно отметьте однако, что DataContexts должен быть недолговечным - они - реализация шаблона Единицы работы, и таким образом их время жизни должно быть равно одной логической операции (например, загружающийся ряд продуктов или вставки нового порядка). DataContexts являются дешевыми, чтобы создать и уничтожить, не напрасно тратьте время, кэшируя их просто так.

8
ответ дан 4 December 2019 в 13:05
поделиться

Эта страница http://www.albahari.com/nutshell/10linqmyths.aspx (см. Миф № 10) говорит, что лучше использовать недолгие экземпляры DataContext.

4
ответ дан 4 December 2019 в 13:05
поделиться

Я полагаю, что контекст данных довольно легок, главным образом просто контейнеры. Данные на самом деле не загружаются в контекст, пока Вы не запрашиваете его. Я не думаю, что было бы неправильно иметь единственный контекст данных, но только инстанцировать его по мере необходимости (как единица работы) вместо того, чтобы иметь в наличии его все время. Тем путем у Вас нет долговечного объекта, который может продолжить становиться больше и больше.

Если Ваши таблицы могут быть разделены на связанные группы таблиц, можно хотеть рассмотреть наличие отдельного контекста данных для каждой из этих групп. Я не уверен, как LINQ обработал бы запрос с помощью данных от нескольких контекстов, но кажется, что это должно работать, пока таблицы находятся на том же сервере. Необходимо было бы проверить это, если бы Вы действительно разламывали вещи на несколько контекстов и имели запросы, для которых были нужны таблицы больше чем от одного.

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

2
ответ дан 4 December 2019 в 13:05
поделиться
Другие вопросы по тегам:

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