Member 14557066 Ответов: 1

Получение дубликатов записей в индексном представлении в MVC C#


Я новичок в C# и унаследовал веб-приложение, которое теперь я несу полную ответственность за исправление и улучшение. Я только что создал контроллер и представление с помощью мастера VS "контроллер MVC 5 с представлениями, используя Entity Framework". Я использую код по умолчанию, который сгенерировал VS.

Я также заметил, что запись все еще появляется, даже если идентификатор тот же, что и в представлении SQL.

Любая помощь будет очень признательна!


@foreach (var item in Model)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.JudgmentID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.LoanID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.JudgmentAmount)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.JudgmentDate)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
            @Html.ActionLink("Details", "Details", new { id = item.ID }) |
            @Html.ActionLink("Delete", "Delete", new { id = item.ID })
        </td>
    </tr>
}

1050001010    1000.00 7/5/2016 12:00:00 AM    Edit | Details | Delete
1050001010    1000.00 7/5/2016 12:00:00 AM    Edit | Details | Delete

Вторая запись должна быть другой.

Я получаю эту ошибку в журнале.

SOURCE:System.Core TRACE: at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable1 source) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.b__2[TResult](IEnumerable1 sequence) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot) at System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression)


Что я уже пробовал:

I have tried to start over and build everything a second time.

Я запустил сеанс отладки, и в контроллере он дублируется, поэтому index.chtml показывает только то, что получает контроллер.

F-ES Sitecore

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

Member 14557066

Извините, я сделал это на нескольких сайтах и забыл, на каких именно я это добавил.

публичный индекс ActionResult(int? id)
{

if (id == null)
{
возврат нового HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Видовой мешок.Идентификатор = идентификатор;
return View(db.JDs.Where(x=>x.ID ==id).Список());
}

F-ES Sitecore

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

Member 14557066

Ладно, может быть, я делаю это неправильно. Я просто пытаюсь перечислить все записи для LNID, LNID-это не PK второй таблицы в представлении SQL JDID is и LN.ID является первичным для первой таблицы. Мое представление SQL выглядит примерно так
выберите LN.ИД, ИД.ДЖИД, ДЖЕЙ ДИ.JDAMT, ДЖЕЙ ДИ.JDDATE от
LNs
внутреннее соединение на Джей Ди Джей Ди.LNID = ЛН.LNID

Предполагается, что у него есть много записей LNID, только одна запись ID, но идентификатор, передаваемый в ActionResult, является идентификатором, а не LNID. Как я могу получить этот результат? Извините, что я не создал этот беспорядок, я просто должен поддерживать его и улучшать. Спасибо за всю помощь!

1 Ответов

Рейтинг:
0

Member 14557066

Я добавил:

[Key][Column(Order = 0)]
и
[Key][Column(Order = 1)]
к модели.

Таким образом, представление будет знать, что уникальный ключ-это второй столбец, а первый-PK из присоединенной таблицы и параметр, переданный представлению.

Благодаря Ф-Эс технологического оборудования для указывая мне в правильном направлении!