Hi,
I'm using Kendo professional for Asp.net Core.
I got the error in "Session.GetObjectFromJson<IList< " and "Session.SetObjectAsJson( "
SeverityCodeDescriptionProjectFileLineSuppression State
ErrorCS1061'ISession' does not contain a definition for 'GetObjectFromJson' and no accessible extension method 'GetObjectFromJson' accepting a first argument of type 'ISession' could be found (are you missing a using directive or an assembly reference?)
I tried to fix by install Session from Nuget. but I can't find any package called Session in Nuget. Thank you if you can help.
ProductService.cs file:
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Http;
using Kendo.Mvc.Examples.Extensions;
namespace Kendo.Mvc.Examples.Models
{
public class ProductService : BaseService, IProductService
{
private static bool UpdateDatabase = false;
private ISession _session;
public ISession Session { get { return _session; } }
public ProductService(IHttpContextAccessor httpContextAccessor)
{
_session = httpContextAccessor.HttpContext.Session;
}
public IEnumerable<ProductViewModel> Read()
{
return GetAll();
}
public IList<ProductViewModel> GetAll()
{
using (var db = GetContext())
{
var result = Session.GetObjectFromJson<IList<ProductViewModel>>("Products");
if (result == null || UpdateDatabase)
{
var categories = db.Categories.ToList();
result = db.Products.ToList().Select(product =>
{
var category = categories.First(c => product.CategoryID == c.CategoryID);
return new ProductViewModel
{
ProductID = product.ProductID,
ProductName = product.ProductName,
UnitPrice = product.UnitPrice.HasValue ? product.UnitPrice.Value : default(decimal),
UnitsInStock = product.UnitsInStock.HasValue ? product.UnitsInStock.Value : default(int),
QuantityPerUnit = product.QuantityPerUnit,
Discontinued = product.Discontinued,
UnitsOnOrder = product.UnitsOnOrder.HasValue ? product.UnitsOnOrder.Value : default(int),
CategoryID = product.CategoryID,
Category = new CategoryViewModel()
{
CategoryID = category.CategoryID,
CategoryName = category.CategoryName
},
LastSupply = DateTime.Today
};
}).ToList();
Session.SetObjectAsJson("Products", result);
}
return result;
}
}
public void Create(ProductViewModel product)
{
if (!UpdateDatabase)
{
var products = GetAll();
var first = products.OrderByDescending(e => e.ProductID).FirstOrDefault();
var id = (first != null) ? first.ProductID : 0;
product.ProductID = id + 1;
products.Insert(0, product);
Session.SetObjectAsJson("Products", products);
}
else
{
using (var db = GetContext())
{
var entity = new Product();
entity.ProductName = product.ProductName;
entity.UnitPrice = product.UnitPrice;
entity.UnitsInStock = (short)product.UnitsInStock;
entity.Discontinued = product.Discontinued;
entity.CategoryID = product.CategoryID;
if (entity.CategoryID == null)
{
entity.CategoryID = 1;
}
if (product.Category != null)
{
entity.CategoryID = product.Category.CategoryID;
}
db.Products.Add(entity);
db.SaveChanges();
product.ProductID = (int)entity.ProductID;
}
}
}
public void Update(ProductViewModel product)
{
if (!UpdateDatabase)
{
var products = GetAll();
var target = products.FirstOrDefault(e => e.ProductID == product.ProductID);
if (target != null)
{
target.ProductName = product.ProductName;
target.UnitPrice = product.UnitPrice;
target.UnitsInStock = product.UnitsInStock;
target.Discontinued = product.Discontinued;
target.CategoryID = product.CategoryID;
target.Category = product.Category;
}
Session.SetObjectAsJson("Products", products);
}
else
{
using (var db = GetContext())
{
var entity = new Product();
entity.ProductID = product.ProductID;
entity.ProductName = product.ProductName;
entity.UnitPrice = product.UnitPrice;
entity.UnitsInStock = (short)product.UnitsInStock;
entity.Discontinued = product.Discontinued;
entity.CategoryID = product.CategoryID;
if (product.Category != null)
{
entity.CategoryID = product.Category.CategoryID;
}
db.Products.Attach(entity);
db.Entry(entity).State = EntityState.Modified;
db.SaveChanges();
}
}
}
public void Destroy(ProductViewModel product)
{
if (!UpdateDatabase)
{
var products = GetAll();
var target = products.FirstOrDefault(e => e.ProductID == product.ProductID);
if (target != null)
{
products.Remove(target);
}
Session.SetObjectAsJson("Products", products);
}
else
{
using (var db = GetContext())
{
var entity = new Product();
entity.ProductID = product.ProductID;
db.Products.Attach(entity);
db.Products.Remove(entity);
var orderDetails = db.OrderDetails.Where(pd => pd.ProductID == entity.ProductID);
foreach (var orderDetail in orderDetails)
{
db.OrderDetails.Remove(orderDetail);
}
db.SaveChanges();
}
}
}
}
}