Как создать базу данных «Редактировать / Удалить / Создать виды с помощью кода» - PullRequest
0 голосов
/ 20 ноября 2018

Это моя модель для моего ClientController

namespace CV_Website.Models
{
public class Clients
{
    [Key]

    public int ID { get; set; }
    public int Age { get; set; }
    public string Gender { get; set; }
    public string Name { get; set; }
    public string Surname { get; set; }

.......

    public List<CV> cVs;

}
public class CV
{
    public string ID { get; set; }
    public string Name { get; set; }
    public string Job { get; set; }
    public bool Public { get; set; }
}
}

И мой DbContext

namespace CV_Website.Models
{
public class ClientsContext : DbContext
{
 public ClientsContext() : base("name=ClientsContext")
    {
    }

    public DbSet<Clients> Clients { get; set; }

}

У меня естьсмог заполнить представление жестко закодированными пользователями (созданными для тестирования), но не из модели

это мои жестко запрограммированные пользователи

 public List<Clients> GenerateCV()
    {
     data.AllClients.Clear()
     List<Clients> result = new List<Clients>();
     List<ClientsContext> contexts = new List<ClientsContext>()
     Clients test = new Clients
     {
         Name = "John",
         Age = 18,
         Gender = "Male",

...};

     Clients test2 = new Clients
     {
         Name = "Sam",
         Age = 18, 
         Public = true

...};

        result.Add(test);
        result.Add(test2);

        return result;
    }`

Я не уверен, как добавить представления Create / Edit / View, используя инструмент скаффолдинга MVC, и в большинстве случаев я получал бы исключение System.NullReferenceException IЯ все еще новичок в кодировании и не уверен, что делаю неправильно. Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

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

Список клиентов

Следующее действие в вашем клиентском контроллере вернет список клиентов из вашей базы данных в представление:

// GET: CV_Website/Clients/ClientList
[HttpGet]
public ActionResult ClientList()
{
    //using statement disposes the connection to the database once query has completed
    using (var context = new ClientContext())
    {
        //.ToList runs the query and maps the result to List<Client>
        var clients = context.Clients.ToList();
    }

    //Return view with list of clients as the model
    return View("ClientList", clients);
}

Просто щелкните правой кнопкой мыши в любом месте этогометод и выберите Добавить вид, чтобы создать вид.

Если вы выберете «Список» в качестве шаблона и «Клиент (CV_Website.Models)» в качестве класса Model, он создаст представление, в котором перечислены подробности для каждого клиента в списке.В представлении вы можете увидеть следующие строки кода:

@Html.ActionLink("Edit", "Edit", new { /* id=item.PrimaryKey */ }) |
@Html.ActionLink("Details", "Details", new { /* id=item.PrimaryKey */ })
@Html.ActionLink("Delete", "Delete", new { /* id=item.PrimaryKey */ })

Это URL-адреса, которые указывают на действия в вашем контроллере.

Редактировать клиент

Например, вот реализация для Edit:

//Added third parameter to clearly point to 'Client' controller
@Html.ActionLink("Edit", "Edit", "Client", new { id=item.ID })

Этот URL-адрес указывает на действие с именем Edit в клиентском контроллере, которое будет читать другоеВид с именем «Редактировать».Реализация будет выглядеть примерно так:

// GET: CV_Website/Clients/Edit/1
[HttpGet]
public ActionResult Edit(int id)
{
    using (var context = new ClientContext())
    {
        //Using Linq, select the client with the matching ID or return null
        var client = context.Clients.SingleOrDefault(c => c.Id == id);
    }

    return View("ClientList", client);
}

Еще раз щелкните правой кнопкой мыши и выберите Добавить представление.На этот раз снова выберите шаблон «Редактировать» и модель клиента.

Это создаст представление с формой, которую можно отправить в контроллер.Чтобы улучшить читабельность, я бы написал оператор using следующим образом:

@using (Html.BeginForm("Edit", "Client", FormMethod.Post))

Реализация действия Edit будет выглядеть примерно так:

// POST: CV_Website/Clients/Edit/{Client}
[HttpPost]
public ActionResult Edit(Client client)
{
    using (var context = new ClientContext())
    {
        //Get client from database
        var clientInDb = context.Clients.SingleOrDefault(c => c.Id == client.ID);

        //Update client using properties from the client parameter
        clientInDb.Age = client.Age;
        clientInDb.Gender = client.Gender;
        clientInDb.Name = client.Name;
        clientInDb.Surname = client.Surname;

        //Commit changes to the database
        context.SaveChanges();
    }

    return View("ClientList", client);
}

Это обновит клиента в базе данных.и сохраняет изменения.Надеюсь, это поможет вам начать работу.

Подробнее о DbContext здесь

0 голосов
/ 20 ноября 2018

Код сначала создает для нас базу данных на основе наших классов. Пожалуйста, используйте следующие ссылки для ответа:

Основы подхода кода вначале

Код сначала демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...