reboot777
@reboot777
нищий студент

Как связать строку идентификатор главной таблицы с таблицей, где несколько столбцов?

Добрый день.
Пишу проект посредством asp.net mvc.
Добавил базу данных, модель. Контроллеры и представления заодно.
При проверке работоспособности, в представлении нет опции добавлять несколько записей на одного человека.
То есть, есть допустим две таблицы.
1. Главная таблица. Столбцы: id_chelovek, ФИО, Обращения.
2. Обращения. Столбцы: id_chelovek, Дата обращения, Причина обращения, Отметка о выполнении.
3. Задача: чтобы к одной записи на одного человека цеплялись обращения.
4. Не пойму как это реализовать на C#. В контроллере и моделе.
Код контроллера и модели прилагаю.

namespace tson10.Controllers
{
    public class peopleController : Controller
    {
        private tsonEntities4 db = new tsonEntities4();

        // GET: people
        public async Task<ActionResult> Index()
        {
            var people = db.people.Include(p => p.category).Include(p => p.child).Include(p => p.city).Include(p => p.disability).Include(p => p.firing).Include(p => p.status).Include(p => p.street).Include(p => p.treatment);
            return View(await people.ToListAsync());
        }

        // GET: people/Details/5
        public async Task<ActionResult> Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            person person = await db.people.FindAsync(id);
            if (person == null)
            {
                return HttpNotFound();
            }
            return View(person);
        }

        // GET: people/Create
        public ActionResult Create()
        {
            ViewBag.id_category = new SelectList(db.categories, "id_category", "Категория");
            ViewBag.id_chelovek = new SelectList(db.children, "id_chelovek", "Фамилия");
            ViewBag.id_city = new SelectList(db.cities, "id_city", "Населенный_пункт");
            ViewBag.id_disability = new SelectList(db.disabilities, "id_disability", "Инвалидность");
            ViewBag.id_firing = new SelectList(db.firings, "id_firing", "Отопление");
            ViewBag.id_status = new SelectList(db.status, "id_status", "Статус");
            ViewBag.id_street = new SelectList(db.streets, "id_street", "Улица");
            ViewBag.id_chelovek = new SelectList(db.treatments, "id_chelovek", "Дата_обращения", "Причина_обращения", "Отметка_о_выполнении");
            return View();
        }

        // POST: people/Create
        // Чтобы защититься от атак чрезмерной передачи данных, включите определенные свойства, для которых следует установить привязку. Дополнительные 
        // сведения см. в статье https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> Create([Bind(Include = "id_chelovek,Фамилия,Имя,Отчество,Дата_рождения,Телефон,id_category,id_disability,id_city,id_street,Дом,Квартира,id_firing,id_status")] person person)
        {
            if (ModelState.IsValid)
            {
                db.people.Add(person);
                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }

            ViewBag.id_category = new SelectList(db.categories, "id_category", "Категория", person.id_category);
            ViewBag.id_chelovek = new SelectList(db.children, "id_chelovek", "Фамилия", person.id_chelovek);
            ViewBag.id_city = new SelectList(db.cities, "id_city", "Населенный_пункт", person.id_city);
            ViewBag.id_disability = new SelectList(db.disabilities, "id_disability", "Инвалидность", person.id_disability);
            ViewBag.id_firing = new SelectList(db.firings, "id_firing", "Отопление", person.id_firing);
            ViewBag.id_status = new SelectList(db.status, "id_status", "Статус", person.id_status);
            ViewBag.id_street = new SelectList(db.streets, "id_street", "Улица", person.id_street);
            ViewBag.id_chelovek = new SelectList(db.treatments, "id_chelovek", "Причина_обращения", person.id_chelovek);
            return View(person);


КОД модели гл.таблицы.:


namespace tson10.Models
{
    using System;
    using System.Collections.Generic;
    
    public partial class person
    {
        public int id_chelovek { get; set; }
        public string Фамилия { get; set; }
        public string Имя { get; set; }
        public string Отчество { get; set; }
        public Nullable<System.DateTime> Дата_рождения { get; set; }
        public string Телефон { get; set; }
        public Nullable<int> id_category { get; set; }
        public Nullable<int> id_disability { get; set; }
        public Nullable<int> id_city { get; set; }
        public Nullable<int> id_street { get; set; }
        public string Дом { get; set; }
        public string Квартира { get; set; }
        public Nullable<int> id_firing { get; set; }
        public Nullable<int> id_status { get; set; }
    
        public virtual category category { get; set; }
        public virtual child child { get; set; }
        public virtual city city { get; set; }
        public virtual disability disability { get; set; }
        public virtual firing firing { get; set; }
        public virtual status status { get; set; }
        public virtual street street { get; set; }
        public virtual treatment treatment { get; set; }
    }
}

КОД модели обращений:


namespace tson10.Models
{
    using System;
    using System.Collections.Generic;
    
    public partial class treatment
    {
        public int id_chelovek { get; set; }
        public Nullable<System.DateTime> Дата_обращения { get; set; }
        public string Причина_обращения { get; set; }
        public string Отметка_о_выполнении { get; set; }
    
        public virtual person person { get; set; }
    }
}


Уточню. Целью является "привязка" id_chelovek гл.таблицы к столбцам таблицы Обращения. Что было так:
Иванов Иван Иванович
00.00.00.
id_chelovek - Обращение 1
id_chelovek - Обращение 2
id_chelovek - Обращение 3
...

Признаю, глупый вопрос..но хочу это понять. Как реализовать на C# в контроллере?
Или как вообще реализовать это?
Спасибо за внимание.
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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