[英]Upgraded to .NET 6, having issues with EF - SqlNullValueException: 'Data is Null. This method or property cannot be called on Null values.'
[英]SqlNullValueException: Data is Null. This method or property cannot be called on Null values error in ASP.NET Core 6 MVC project
我正在开发一个 ASP.NET Core 6 MVC 项目并收到此屏幕截图中显示的错误:
这是我的作业,所以任何帮助将不胜感激。
我试图更改 controller 和存储库,但没有任何改变。 代码如下 - ClubController
:
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using webHomework.Data;
using webHomework.Interfaces;
using webHomework.Models;
using webHomework.ViewModels;
namespace webHomework.Controllers
{
public class ClubController : Controller
{
private readonly IClubRepository _clubRepository;
private readonly IPhotoService _photoService;
public ClubController(IClubRepository clubRepository, IPhotoService photoService)
{
_clubRepository = clubRepository;
_photoService = photoService;
}
public async Task<IActionResult> Index()
{
IEnumerable<Club> clubs = await _clubRepository.GetAll();
return View(clubs);
}
public async Task<IActionResult> Detail(int id)
{
Club club = await _clubRepository.GetByIdAsync(id);
return View(club);
}
public IActionResult Create()
{
return View();
}
[HttpPost]
public async Task<IActionResult> Create(CreateClubViewModel clubVM)
{
if (ModelState.IsValid)
{
var result = await _photoService.AddPhotoAsync(clubVM.Image);
var club = new Club
{
Title = clubVM.Title,
Description = clubVM.Description,
Image = result.Url.ToString(),
Address = new Address
{
Street = clubVM.Address.Street,
City = clubVM.Address.City,
State = clubVM.Address.State,
}
};
_clubRepository.Add(club);
return RedirectToAction("Index");
}
else
{
ModelState.AddModelError("", "Photo upload failed");
}
return View(clubVM);
}
}
}
ClubRepository
:
using Microsoft.EntityFrameworkCore;
using webHomework.Data;
using webHomework.Interfaces;
using webHomework.Models;
namespace webHomework.Repository
{
public class ClubRepository : IClubRepository
{
private readonly ApplicationDbContext _context;
public ClubRepository (ApplicationDbContext context)
{
_context = context;
}
public bool Add(Club club)
{
_context.Add(club);
return Save();
}
public bool Delete(Club club)
{
_context.Remove(club);
return Save();
}
public async Task<IEnumerable<Club>> GetAll()
{
return await _context.Clubs.ToListAsync();
}
public async Task<Club> GetByIdAsync(int id)
{
return await _context.Clubs.Include(i => i.Address).FirstOrDefaultAsync(i => i.Id == id);
}
public async Task<IEnumerable<Club>> GetClubByCity(string city)
{
return await _context.Clubs.Where(c => c.Address.City.Contains(city)).ToListAsync();
}
public bool Save()
{
var saved = _context.SaveChanges();
return saved > 0 ? true : false;
}
public bool Update(Club club)
{
_context.Update(club);
return Save();
}
}
}
将映射到数据库编号字段的int
属性声明为可空的int?
.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.