Изменение имени первичного ключа в классе модели ASP .NET MVC - PullRequest
2 голосов
/ 08 февраля 2011

Мой класс модели:

 public class Contracts
    {
        public int ContractId { get; set; }
        public string contract { get; set; }            
    }

Добавьте свой контроллер:

public ActionResult Index()
        {
            var contracts = from c in db.Contracts
                            select c;
            return View(contracts.ToList());    
        }

Строго типизированное представление возвращает:

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ }) |
            @Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })
        </td>
        <td>
            @item.ContractId
        </td>
        <td>
            @item.contract
        </td>
    </tr>
}

Первоначально основной основной таблицыКлюч назывался ID .Затем я изменил его на ContractId для использования в внешних ключах.

Как установить первичный ключ модели, чтобы представление распознало его?

ОБНОВЛЕНИЕ1 : я использую EntityFramework 4

ОБНОВЛЕНИЕ2 : Ответ, предоставленный Брайаном, правильно назначил ключ вручную.Для решения моей проблемы требовалось переименовать таблицу в «Контракты» из «контракта».Я также переименовал поле «контракт» в этой таблице в «Имя».Затем я удалил класс модели «Контракты» и заново создал его как «Контракт».Папка VIEW была переименована в Contract.Я предполагаю, что соглашения об именах нарушали распознавание кода первичного ключа.

1 Ответ

3 голосов
/ 08 февраля 2011

Предположим, ваши методы действия на контроллере примерно такие:

public ActionResult Details(int id){
    // retrieve contract and generate view
}
      public ActionResult Edit(int id){
    // retrive contract and generate view
}
      public ActionResult Delete(int id){
    // delete contract
}

Тогда ваш взгляд должен выглядеть так:

@foreach (var item in Model) {    
   <tr>        
      <td>
          @Html.ActionLink("Edit", "Edit", new { id=item.ContractId }) |
          @Html.ActionLink("Details", "Details", new { id=item.ContractId }) |
          @Html.ActionLink("Delete", "Delete", new { id=item.ContractId })
      </td>
      <td>@item.ContractId</td>
      <td>@item.contract</td>
   </tr>
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...