Операции выбора, вставки и обновления из EF Core в ADO. NET с использованием хранимых процедур для нескольких таблиц - PullRequest
0 голосов
/ 03 марта 2020

У меня есть приложение, разработанное в ASP. NET Ядро с EF Core - первый подход кода. Я использовал только одну таблицу, описанную ниже:

**Employee**
-ID_Emp -pk
-Name
-Department
-Function
-Adress

Ниже вы можете найти файлы, которые используются в приложении. Employee.cs из папки Models:

public class Angajat
{
    [Key]
    public int AngajatId { get; set; }
    [Column(TypeName ="nvarchar(250)")]
    [Required(ErrorMessage ="Please fill this field.")]
    [DisplayName("Nume")]
    public string Nume { get; set; }
    [Column(TypeName = "varchar(10)")]
    [Required(ErrorMessage = "Please fill this field.")]
    [DisplayName("Departament")]
    public string Departament { get; set; }
    [Column(TypeName = "varchar(100)")]
    [Required(ErrorMessage = "Please fill this field.")]
    public string Functia { get; set; }
    [Column(TypeName = "varchar(100)")]
    [Required(ErrorMessage = "Please fill this field.")]
    [DisplayName("Adresa")]
    public string Adresa { get; set; }
}

EmployeeContext.cs из папки Models:

public class AngajatContext:DbContext
{
    public AngajatContext(DbContextOptions<AngajatContext> options):base(options)
    {
    }

    public DbSet<Angajat> Angajati { get; set; }
}

EmployeeController.cs из папки Controllers:

public class AngajatController : Controller
{
    private readonly AngajatContext _context;

    public AngajatController(AngajatContext context)
    {
        _context = context;
    }

    // GET: Angajat
    public async Task<IActionResult> Index()
    {
        return View(await _context.Angajati.ToListAsync());
    }


    // GET: Angajat/Create
    public IActionResult AddOrEdit(int id = 0)
    {
        if (id == 0)
            return View(new Angajat());
        else
            return View(_context.Angajati.Find(id));
    }

    // POST: Angajat/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> AddOrEdit([Bind("AngajatId,Nume,Departament,Functia,Adresa")] Angajat angajat)
    {
        if (ModelState.IsValid)
        {
            if (angajat.AngajatId == 0)
                _context.Add(angajat);
            else
                _context.Update(angajat);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }
        return View(angajat);
    }


    // GET: Angajat/Delete/5
    public async Task<IActionResult> Delete(int? id)
    {
        var angajat =await _context.Angajati.FindAsync(id);
        _context.Angajati.Remove(angajat);
        await _context.SaveChangesAsync();
        return RedirectToAction(nameof(Index));
    }
}

Следующим шагом будет расширение приложения до 3 таблиц:

**Company**
-ID_Comp -pk
-Name
-ID_Emp (collection) -fk

**Employee**
-ID_Emp -pk
-Name
-Functia
-Adresa
-ID_Comp -fk
-ID_Dept -fk

**Department**
-ID_Dept -pk
-Name
-ID_Emp (collection) -fk

После этого у меня есть задача изменить выбор, операции вставки и обновления из EF Core в ADO. NET с использованием хранимых процедур.

Итак, у меня есть несколько вопросов по этому поводу.

Это мой план, пожалуйста, дайте мне знать, что вы Подумайте:

  1. Я хочу создать все 3 таблицы, используя доменные классы (сначала подход кода). Будет ли приложение работать, если я создам таблицы с использованием классов домена, а затем использую ADO. NET и хранимые процедуры для операций выбора, вставки и обновления?

  2. Создание хранимых процедур для выбора , вставьте и обновите (задача говорит, что удаление должно работать с EF). Как создать хранимую процедуру для вставки и обновления в нескольких таблицах?

  3. Создать контроллер.

Кроме того, вы знаете, где можно Я нахожу исходный код простого приложения CRUD в ASP. NET Ядро с ADO. NET хранимыми процедурами в нескольких таблицах ?

Если вам нужно больше кода или другой информация, пожалуйста, дайте мне знать.

Спасибо.

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