gpt4 book ai didi

c# - Entity Framework 问题 - ASP.NET 4 MVC 3 - SportsStore 项目

转载 作者:行者123 更新时间:2023-11-30 12:15:27 24 4
gpt4 key购买 nike

(Apress PRO:ASP.NET MVC 3 Framework - 作者 Adam Freeman 和 Steven Sanderson - 第三版)

(提醒一下:我是 ASP.NET 的新手,在 Visual Studio 中构建多项目解决方案。)

直到第 298 页,我一直在很好地学习这本书。(我使用的是 SQL Express。)当我尝试在 Visual Studio 2010 (SP1) 中编译和运行我的解决方案时遇到了障碍。

当我将 ADO.NET 实体数据模型(.edmx 文件)添加到我在 Concrete/ORM/文件夹下的 SportsStore.Domain 项目时出现问题(这很奇怪......第 291 页的书听起来像这样文件应该已经存在...)

... 我更新/刷新实体设计器中的模型以包括两个新属性(ImageData 和 ImageMimeType)--> 编译器在以下情况下抛出异常:

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 页说明原因:Product Table 和 Product 类中的新列之间没有连接。 (我可以在网页上找到并选择一个图像(在磁盘上)并点击提交,但之后没有任何内容添加到数据库中。)

我真的不知道从哪里开始。如果它有助于展示更多我的项目,我一定会的。 (它与书中的几乎相同。)

(实际上 SportsStore.Domain.Entities 下的 Product 类还有另一个问题。SportsStore 下 AdminController 的“ActionResult Edit(...)”方法。 WebUI.Controllers 不喜欢 Product 的 ImageData 属性被声明为 byte 而不是 byte[]。我当然解决了这个问题。我应该在本书的勘误表中报告吗?)

最佳答案

我遇到了同样的问题,这是我解决它的方法。

  1. 不要添加edmx文件
  2. 更新 EFProductRepository.cs 中的 SaveProduct 方法

像这样:

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();
}

关于c# - Entity Framework 问题 - ASP.NET 4 MVC 3 - SportsStore 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7405867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com