Member 13788997 Ответов: 1

Как я могу объединить SQL-таблиц, и создавать новые записи, используя ASP.NET и рамки сущности?


Я создал представление с помощью Microsoft SQL Server, которое имеет соединения для извлечения всей необходимой информации из моих 4 различных таблиц. В Visual Studio я использую ASP.NET чтобы создать веб-страницу для доступа к моей базе данных. Я поднял свой вид, который выглядит великолепно, однако, когда я иду, чтобы добавить новую запись, он говорит мне:

'InnerException {"представление или функция 'dbo.VehiclesView' не может быть обновлена, поскольку модификация затрагивает несколько базовых таблиц".}'

Как я могу исправить эту проблему?

Вот мой код VehiclesView:
<pre lang="c#">public class VehiclesViewsController : Controller
    {
        private DataConnection db = new DataConnection();

        // GET: VehiclesViews
        public ActionResult Index()
        {
            return View(db.VehiclesViews.ToList());
        }

        // GET: VehiclesViews/Details/5
        public ActionResult Details(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            VehiclesView vehiclesView = db.VehiclesViews.Find(id);
            if (vehiclesView == null)
            {
                return HttpNotFound();
            }
            return View(vehiclesView);
        }

        // GET: VehiclesViews/Create
        public ActionResult Create()
        {
            return View();
        }

        // POST: VehiclesViews/Create
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Create([Bind(Include = "VehicleId,Year,Name,Model,Type,EngineSize,Transmission,NumberOfDoors,Colour,Cost,Price,SoldDate")] VehiclesView vehiclesView)
        {
            if (ModelState.IsValid)
            {
                db.VehiclesViews.Add(vehiclesView);
                db.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(vehiclesView);
        }

        // GET: VehiclesViews/Edit/5
        public ActionResult Edit(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            VehiclesView vehiclesView = db.VehiclesViews.Find(id);
            if (vehiclesView == null)
            {
                return HttpNotFound();
            }
            return View(vehiclesView);
        }

        // POST: VehiclesViews/Edit/5
        // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
        // more details see https://go.microsoft.com/fwlink/?LinkId=317598.
        [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Edit([Bind(Include = "VehicleId,Year,Name,Model,Type,EngineSize,Transmission,NumberOfDoors,Colour,Price,Cost,SoldDate")] VehiclesView vehiclesView)
        {
            if (ModelState.IsValid)
            {
                db.Entry(vehiclesView).State = EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            return View(vehiclesView);
        }

        // GET: VehiclesViews/Delete/5
        public ActionResult Delete(int? id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            VehiclesView vehiclesView = db.VehiclesViews.Find(id);
            if (vehiclesView == null)
            {
                return HttpNotFound();
            }
            return View(vehiclesView);
        }

        // POST: VehiclesViews/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public ActionResult DeleteConfirmed(int id)
        {
            VehiclesView vehiclesView = db.VehiclesViews.Find(id);
            db.VehiclesViews.Remove(vehiclesView);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }
    }
}


Что я уже пробовал:

Я новичок в C# и еще новее в Entity Framework. Я посмотрел в интернете, чтобы увидеть, могу ли я найти решение, и то, что я нашел до сих пор, - это сценарий для присоединения к таблицам. Однако я не уверен, что мне это нужно, учитывая, что я сделал это в SQL

F-ES Sitecore

Вместо того чтобы пытаться обновить представление, действуйте непосредственно на таблицах.

1 Ответов

Рейтинг:
2

Atlapure Ambrish

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

sql - View or function " не подлежит обновлению, поскольку модификация затрагивает несколько базовых таблиц - переполнение стека[^]