ASP.NET Проверка MVC Model/ViewModel

Используйте SQL Profiler для разработки, какие индексы создать, он разработан, чтобы решить, что информация для Вас и предлагает улучшенные профили выполнения.

у Вас есть внешние ключи на k3, k4?

Попытка, поворачивающаяся k1, k2 в ints и делающая их внешние ключи, это будет использовать намного меньше устройства хранения данных для одного, я думал бы, и я думаю, что это должно быть более быстро (хотя я могу быть неправым там, я предполагаю, что SQL Server кэширует эти значения). Главное, легче, если когда-нибудь необходимо обновлять значение. Вы просто меняете имя строки внешнего ключа - Вы не должны тогда обновлять 100 миллионов первичных ключей, или что бы то ни было.

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

В:

SELECT TOP(g) d1 
FROM table WITH(NOLOCK)  
WHERE k1 = a  WHERE k2 = b  WHERE k3 = c  WHERE k4 = d  WHERE k5 = e  WHERE k6 = f  
ORDER BY k7

то, Которое, я предполагаю, должно быть

SELECT TOP(g) d1 
FROM table WITH(NOLOCK)  
WHERE k1 = a AND k2 = b  AND k3 = c AND k4 = d AND k5 = e AND k6 = f 
ORDER BY k7

, вероятно, будет некоторый набор данных, которые сразу сокращают recordset по сравнению с, скажем 10 миллионов строк, к 10 000.

, например,

SELECT TOP(g) d1 
FROM (SELECT * 
      FROM table k1=a AND k2=a WITH(NOLOCK)) 
WHERE AND k3 = c AND k4 = d AND k5 = e AND k6 = f 
ORDER BY k7

Это предполагает, что можно сократить начальный набор данных в широком масштабе один или два из, ГДЕ аргументы - который почти бесспорен.

DBAs, вероятно, имеют больше, лучшие решения!

5
задан rene 9 February 2015 в 14:30
поделиться

3 ответа

Можете ли вы опубликовать свой вспомогательный код xval и некоторые из ваших Html.Helpers?

Он принимает сущность и префикс, поэтому я не вижу почему структура в вашей модели представления должна иметь значение. Примерно так:

<%= Html.ClientSideValidation<Foo>("Foo") %>
<%= Html.ClientSideValidation<Bar>("Foo.Bar") %>

Джеймс

0
ответ дан 15 December 2019 в 01:08
поделиться

Если вы используете партиалы и передаете подтип, вам все равно необходимо пройти квалификацию. См. Следующее:

<%@ Control Language="C#" 
                   Inherits="System.Web.Mvc.ViewUserControl<MvcWeb.Models.OrderDetail>" %>

<% using (Html.BeginForm()) { %>

    <fieldset>
        <legend>Fields</legend>
            <%= Html.Hidden("OrderId", Model.OrderId) %>
            <%= Html.Hidden("ProductId", Model.ProductId)%>
        <p>
            <label for="Quantity">Quantity:</label>
            <%= Html.TextBox("OrderDetails.Quantity", Model.Quantity)%>
            <%= Html.ValidationMessage("OrderDetails.Quantity", "*") %>
        </p>
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

<% } %>

Обратите внимание, что это тип OrderDetails, но я все еще использую префикс для сообщений проверки.

4
ответ дан 15 December 2019 в 01:08
поделиться

Если я правильно прочитал, вы помещаете DataAnnotations в класс linq to sql, а затем заполняете свои свойства модели просмотра значениями из класса linq to sql.

Чтобы заставить это работать с xval, вам нужно поместить DataAnnotations в свойства модели представления. Насколько я могу судить по коду xval, он не смотрит за пределами общедоступных свойств для какой-либо информации о проверке (кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь).

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

0
ответ дан 15 December 2019 в 01:08
поделиться
Другие вопросы по тегам:

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