C# 实体框架问题-ASP.NET 4 MVC 3-SportsStore项目
(Apress PRO:ASP.NET MVC 3框架-由Adam Freeman和Steven Sanderson编写-第三版) (作为提示:我对ASP.NET和在Visual Studio中构建多项目解决方案不熟悉。) 直到第298页,我一直很好地理解了这本书。(我正在使用SQLExpress。)当我试图在VisualStudio2010(SP1)中编译和运行我的解决方案时遇到了一个障碍 当我将ADO.NET实体数据模型(.edmx文件)添加到我的SportsStore.Domain项目的Concrete/ORM/folder下(这很奇怪…第291页上的书让人觉得该文件应该已经存在了…)时,就会出现问题 。。。我在实体设计器中更新/刷新模型,以包含两个新属性(ImageData和ImageMimeType)-->编译器在以下情况下引发异常:C# 实体框架问题-ASP.NET 4 MVC 3-SportsStore项目,c#,visual-studio-2010,asp.net-mvc-3,entity-framework-4,C#,Visual Studio 2010,Asp.net Mvc 3,Entity Framework 4,(Apress PRO:ASP.NET MVC 3框架-由Adam Freeman和Steven Sanderson编写-第三版) (作为提示:我对ASP.NET和在Visual Studio中构建多项目解决方案不熟悉。) 直到第298页,我一直很好地理解了这本书。(我正在使用SQLExpress。)当我试图在VisualStudio2010(SP1)中编译和运行我的解决方案时遇到了一个障碍 当我将ADO.NET实体数据模型(.edmx文件)添加到我的SportsStore.Domain项目的C
using SportsStore.Domain.Abstract;
using SportsStore.WebUI.Models;
using SportsStore.Domain.Entities;
namespace SportsStore.WebUI.Controllers {
public class ProductController : Controller {
public ViewResult List(string category, int page = 1) {
ProductsListViewModel viewModel = new ProductsListViewModel {
Products = repository.Products
.Where(p => category == null || p.Category == category)
.OrderBy(p => p.ProductID)
.Skip((page - 1) * PageSize)
.Take(PageSize),
PagingInfo = new PagingInfo {
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = category == null ?
repository.Products.Count() :
repository.Products.Where(e => e.Category == category).Count()
},
CurrentCategory = category
};
return View(viewModel);
}
}
}
说“找不到SportsStore.Domain.Concrete.ORM.Product的概念模型类型。”
删除.edmx文件时,解决方案会成功编译-->但当然,我无法使用新的图像属性将图片添加到数据库中。第291页说明了原因:产品表中的新列和产品类之间没有连接。(我可以在网页上找到并选择一个图像(在磁盘上),然后点击提交,但之后不会向数据库添加任何内容。)
我真的不知道从哪里开始。如果这将有助于显示我的项目,我肯定会更多。(这和这本书的内容几乎一模一样。)
(实际上,sportstore.Domain.Entities下的Product类存在另一个障碍。sportstore.WebUI.Controllers下AdminController的“ActionResult Edit(…)”方法不喜欢将产品的ImageData属性声明为byte而不是byte[]。我当然解决了这个问题。我应该在书的勘误表中报告吗?我遇到了同样的问题,并通过完全删除.edmx文件来解决它。没有它,图像似乎保存和显示得很好。只需确保您的数据库、控制器和视图与书中的内容一致即可 我也遇到了同样的问题,下面是我如何解决的
public void SaveProduct(Product product)
{
if (product.ProductID == 0)
{
context.Products.Add(product);
}
else
{
Product prod = context.Products.Where(p => p.ProductID == product.ProductID).FirstOrDefault();
prod.Category = product.Category;
prod.Description = product.Description;
prod.ImageData = product.ImageData;
prod.ImageMimeType = product.ImageMimeType;
prod.Name = product.Name;
prod.Price = product.Price;
}
context.SaveChanges();
}
我认为这不是最好的方法,因为我们是手工绘制地图的
编辑:更好的方法
public void SaveProduct(Product product)
{
if (product.ProductID == 0)
{
context.Products.Add(product);
}
else
{
context.Entry(product).State = EntityState.Modified;
}
context.SaveChanges();
}
我一直无法得到工作的来源有人可以压缩一个工作版本?我在编译方面做得很好,但它似乎与Ninject有问题