我是否为每个API控制器创建了一个EFRepository?

时间:2016-11-04 19:00:15

标签: c# asp.net asp.net-web-api

仍然是ASP.NET的新手。我有两个模型和两个API控制器。我希望我可以在我的EFRepository中为两个控制器创建所有方法,但它似乎只允许我使用我构建的第一个模型中的对象。我的问题是,我是否只是为第二个模型/ API创建另一个存储库?或者最好的做法是为我的方法创建一个通用的服务器端服务?或者在我的思考过程中还有什么我想念的东西?谢谢!

记录模型

namespace Train.Models {
    public class Record {
        public int Id { get; set; }
        public int Quantity { get; set; }
        public DateTime DateCreated { get; set; }
        public bool IsActive { get; set; }
        public ApplicationUser User { get; set; }
        public virtual ICollection<Cars> Cars { get; set; }
    }
}

汽车模型

namespace Train.Models {
    public class Cars {
        public int Id { get; set; }
        public string EmptyOrLoaded { get; set; }
        public string CarType { get; set; }
        //Hopper, flatbed, tank, gondola, etc.
        public string ShippedBy { get; set; }
        //UP(Union Pacific) or BNSF
        public string RailcarNumber { get; set; }
        //public virtual ApplicationUser ApplicationUser { get; set; }
        public string UserId { get; set; }
        public string RecordId { get; set; }
        public virtual Record Record { get; set; }

    }
}

API CarsController方法

public IHttpActionResult Post(Cars car) {
        car.UserId = User.Identity.GetUserId();
        if (!ModelState.IsValid) {
            return BadRequest(this.ModelState);
        }
        _repo.SaveCar(car);
        return Created("", car);
    }

API Recordcontroler方法

  public IHttpActionResult PostRecord(Record record) {
        var UserId = this.User.Identity.GetUserId();
        if (!ModelState.IsValid) {
            return BadRequest(this.ModelState);
        }
        _repo.SaveRecord(record);
        return Created("", record);
    }

在EFRepository中保存Car方法

   public void SaveCar(Cars carToSave) {
        if (carToSave.Id == 0) {
            _db.Cars.Add(carToSave);
            _db.SaveChanges();

        } else {
            var original = this.Find(carToSave.Id);
            original.EmptyOrLoaded = carToSave.EmptyOrLoaded;
            original.CarType = carToSave.CarType;
            original.ShippedBy = carToSave.ShippedBy;
            original.RailcarNumber = carToSave.RailcarNumber;
            _db.SaveChanges();
        }

0 个答案:

没有答案