基于没有键定义的mvc5类
本文关键字:mvc5 定义 于没 | 更新日期: 2023-09-27 18:05:36
我尝试从这个控制器添加视图。我只需要这个视图来显示数据,而不是用于插入,更新或删除
public ActionResult Index()
{
var CartObj = ShoppingCart.GetCart(this.HttpContext);
var classshop = new New
{
CartItems = CartObj.GetCartItems(),
CartTotal = CartObj.GetSum()
};
return View(classshop);
}
namespace MusicStore.Models
{
public class ShoppingCart
{
MusicStoreEntities dbo = new MusicStoreEntities();
string ShoppingCartID { get; set; }
public const string CartSessionKey = "CartId";
public static ShoppingCart GetCart(HttpContextBase Context)
{
var cart = new ShoppingCart();
cart.ShoppingCartID = cart.GetCardId(Context);
return cart;
}
public static ShoppingCart GetCart(Controller controller)
{
return GetCart(controller.HttpContext);
}
public List<Cart> GetCartItems()
{
return dbo.Carts.Where(a => a.CartId == ShoppingCartID).ToList();
}
public decimal? GetSum()
{
decimal? Sum = (from items in dbo.Carts
where items.CartId == ShoppingCartID
select (int)items.Count * items.album.Price).Sum();
return Sum ?? decimal.Zero;
}
}
}
然后我得到了这个错误:
运行选定的代码生成器出错:无法检索'Musicstore.Model.new'的元数据在模型生成期间检测到一个或多个验证错误musicstore,模型。New:实体类型"New"没有定义键。定义entityType
的键
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MusicStore.Models
{
public class New
{
public List<Cart> CartItems { get; set; }
public decimal? CartTotal { get; set; }
}
}
这里有两个选项。首先,如果该类映射到数据库中的表,则实体框架中的每个模型都需要一个主键。将其添加到您的模型中:
[Key]
public int Id { get; set; }
创建一个名为Id
的新属性,[Key]
属性使其成为主键。从技术上讲,您不需要该属性,因为EF将拾取Id
属性并将其用作键,但我更喜欢显式。
或者,如果您不希望这个类成为数据库中的一个表,可以像这样向该类添加NotMapped
属性:
[NotMapped]
public class New
{
public List<Cart> CartItems { get; set; }
public decimal? CartTotal { get; set; }
}
我知道这很老了,但我刚刚遇到了这个问题。
发生的是什么是当我创建了一个类,CreateEmployeeViewModel,在模型文件夹内Visual Studio"聪明地"把一行放在我的DB上下文类
public System.Data.Entity.DbSet<eManager.Web.Models.CreateEmployeeViewModel>
CreateEmployeeViewModels { get; set; }
因此在下一个update-migration
上创建了一个表。删除这一行删除了对关键字段的要求。
注意:如果创建了表,您可能还必须将AutomaticMigrationDataLossAllowed = true;
行添加到DBMigrationConfiguration类中。