簡體   English   中英

CRUD WEB API 與實體框架

[英]CRUD WEB API with entity framework

我開始使用數據庫開發我的項目 - web 應用程序。 我將 WEB API 與我需要在項目中實現 CRUD 操作的實體框架一起使用。

閱讀 - 工作正常

但我不知道如何實現創建、更新、刪除; 我沒有足夠的經驗,很高興你的建議。

我嘗試實現我的應用程序的良好架構 - 使用存儲庫模式和結構模式。 如果您對我的項目架構有任何建議,我將不勝感激。

我不知道如何在價值 controller 和存儲庫中實現它,你能幫忙嗎?

附上我的代碼:

存儲庫

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WebAPI
{
    public class CustomerRepository
    {
        public IQueryable<Customer> GetAllCustomers()
        {
            DevelopersEntities dev = new DevelopersEntities();
            return dev.Customers;
        }

        public IQueryable<Customer> GetAllCustomers(int id)
        {
            DevelopersEntities dev = new DevelopersEntities();
            return dev.Customers.Where(c=>c.Id==id).Select(e=>e);
        }

        public IQueryable<Customer> DeleteCustomer(int id)
        {
            DevelopersEntities dev = new DevelopersEntities();
            return dev.Customers.Remove(id);
        }

        public IQueryable<Customer> CreateCustomer()
        {
            DevelopersEntities dev = new DevelopersEntities();


        }

        public IQueryable<Customer> UpdateCustomer(int id)
        {
            DevelopersEntities dev = new DevelopersEntities();

        }
    }
}

客戶 model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WebAPI;

namespace DevelopersWeb.Models
{
    public class CustomerModel
    {
        public int CustomerId { get; set; }
        public string CustomerName { get; set; }

        public IEnumerable<HardwareModel> Hardware { get; set; }
        public IEnumerable<SoftwareModel> Software { get; set; }
    }
}

硬件 Model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DevelopersWeb.Models
{
    public class HardwareModel
    {
        public int HardwareId { get; set; }
        public string HardwareName { get; set; }

    }
}

軟件 Model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace DevelopersWeb.Models
{
    public class SoftwareModel
    {
        public int SoftwareId { get; set; }
        public string SoftwareName { get; set; }
    }
}

Model 工廠

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WebAPI;

namespace DevelopersWeb.Models
{
    public class ModelFactory
    {
        public CustomerModel Create(Customer customer)
        {
            return new CustomerModel()
            {
                CustomerId = customer.Id,
                CustomerName = customer.Name,

                Hardware = customer.HardWares.Select(h=>Create(h)),
                Software = customer.Softwares.Select(c=>Create(c))
            };
        }

        public HardwareModel Create(HardWare hardware)
        {
            return new HardwareModel()
            {
                HardwareId = hardware.HardWareId,
                HardwareName = hardware.HardWareName,
            };
        }

        public SoftwareModel Create(Software software)
        {
            return new SoftwareModel()
            {
                SoftwareId = software.SoftwareId,
                SoftwareName = software.SoftwareName
            };
        }
    }
}

值 Controller

using DevelopersWeb.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using WebAPI;

namespace DevelopersWeb.Controllers
{
    public class ValuesController : ApiController
    {
        ModelFactory _modelFactory;

        public ValuesController()
        {
            _modelFactory = new ModelFactory();
        }
        // GET api/values
        public IEnumerable<CustomerModel> Get()
        {
            CustomerRepository cr = new CustomerRepository();
            return cr.GetAllCustomers().ToList().Select(c=> _modelFactory.Create(c));
        }

        // GET api/values/5
        public string Get(int id)
        {
            return "xxx";
        }

        // POST api/values
        public void Post([FromBody]string value)
        {

        }

        // PUT api/values/5
        public void Put(int id, [FromBody]string value)
        {
        }

        // DELETE api/values/5
        public void Delete(int id)
        {
        }
    }
}

以下是您應該如何保存客戶 object:

public void CreateCustomer(Customer customer)
{
    DevelopersEntities dev = new DevelopersEntities();
    dev.Customers.Add(customer)
    dev.SaveChanges();
}

這是您的 api 操作:

  // POST api/values
    public void Post([FromBody]CustomerModel customerModel)
    {
       //Here you should transform CustomerModel object to customerEntity
        CustomerRepository cr = new CustomerRepository();
        cr.CreateCusomer(customer);

        return Ok();
    }

您也應該考慮在這里使用依賴注入模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM