我正在尝试使用ActionResult
将数据保存到数据库中
public ActionResult Create(GigFormViewModel viewModel)
{
var artistId = User.Identity.GetUserId();
var artist = _context.Users.Single(u => u.Id == artistId);
var genre = _context.Genres.Single(g => g.Id == viewModel.Genre);
var gig = new Gig
{
Artist = artist,
DateTime = DateTime.Parse(string.Format("{0} {1}", viewModel.Date, viewModel.Time)),
Genre=genre,
Venue=viewModel.Venue
};
_context.Gigs.Add(gig);
_context.SaveChanges();
return RedirectToAction("Index", "Home");
}
保存数据时出现错误
无法将类型为'System.Data.Entity.DynamicProxies.ApplicationUser_C811B05818B5E64ECDA3F7F75CC04ED97BE32CA9226F31FEEEF1EE499B74428B'的对象转换为类型为'System.String'的对象。
以下是更多详细信息的屏幕截图:
楷模:
public class Genre
{
public byte Id { get; set; }
[Required]
[StringLength(255)]
public string Name { get; set; }
}
public class Gig
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public ApplicationUser Artist { get; set; }
[Required]
public DateTime DateTime { get; set; }
[Required]
public string Venue { get; set; }
[Required]
public Genre Genre { get; set; }
}
可能是什么问题??
最佳答案
我自己想通了。
我认为这与Gigs模型和Artist
的验证有关。
删除了数据注释[StringLength(255)]
,它工作正常。
因此,更新的Gigs Model类如下:
public class Gig
{
public int Id { get; set; }
[Required]
[StringLength(255)]
public ApplicationUser Artist { get; set; }
[Required]
public DateTime DateTime { get; set; }
[Required]
public string Venue { get; set; }
[Required]
public Genre Genre { get; set; }
}