ASP.NET Core 7 MVC CS1061错误:找不到AddDate/AddBy定义求助
我在添加新表到模型后运行项目,出现以下CS1061错误:
Error CS1061
'Eng_Designation_Name' does not contain a definition for 'AddDate' and no accessible extension method 'AddDate' accepting a first argument of type 'Eng_Designation_Name' could be found (are you missing a using directive or an assembly reference?) TEEPOEEApp C:\Users\londono-ecr\source\repos\TEEPOEEApp\TEEPOEEApp\Controllers\Eng_Designation_NameController.cs 65 ActiveError CS1061
'Eng_Designation_Name' does not contain a definition for 'AddBy' and no accessible extension method 'AddBy' accepting a first argument of type 'Eng_Designation_Name' could be found (are you missing a using directive or an assembly reference?) TEEPOEEApp C:\Users\londono-ecr\source\repos\TEEPOEEApp\TEEPOEEApp\Controllers\Eng_Designation_NameController.cs 66 Active
相关代码
DbContext代码
public virtual DbSet<Eng_Designation_Name> Eng_Designation_Name { get; set; } modelBuilder.Entity<Eng_Designation_Name>(entity => { entity.HasKey(e => e.Designation_Names_Id); entity.ToTable("Eng_Designation_Name"); entity.Property(e => e.Designation_Names_Id) .HasColumnName("Designation_Names_Id"); entity.Property(e => e.Designation_Names) .HasMaxLength(250) .IsUnicode(false) .HasColumnName("Designation_Names"); entity.Property(e => e.AddDate) .HasColumnType("datetime") .HasDefaultValueSql("(getdate())"); entity.Property(e => e.AddBy) .HasMaxLength(250) .IsUnicode(false) .HasColumnName("AddBy");
模型类代码
using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace TEEPOEEApp.Models { public partial class Eng_Designation_Name { public Eng_Designation_Name() { Eng_DownTimeDay_Designation_Name = new HashSet<Eng_DownTimeDay_Designation_Name>(); } [Key] public int Designation_Names_Id { get; set; } [StringLength(500)] public string Designation_Names { get; set; } [Column(TypeName = "datetime")] public DateTime AddDate { get; set; } [StringLength(250)] public string AddBy { get; set; } [InverseProperty("Designation_Names")] public virtual ICollection<Eng_DownTimeDay_Designation_Name> Eng_DownTimeDay_Designation_Name { get; set; } } }
控制器代码
using System; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using TEEPOEEApp.Models; namespace TEEPOEEApp.Controllers { public class Eng_Designation_Name : Controller { private readonly TEEPOEEAppDBContext _context; public Eng_Designation_Name(TEEPOEEAppDBContext context) { _context = context; } // GET: Eng_Designation_Name public async Task<IActionResult> Index() { return View(await _context.Eng_Designation_Name.ToListAsync()); } // GET: Eng_Designation_Name/Details/5 public async Task<IActionResult> Details(int? id) { if (id == null || _context.Eng_Designation_Name == null) { return NotFound(); } var eng_Designation_Name = await _context.Eng_Designation_Name .FirstOrDefaultAsync(m => m.Designation_Names_Id == id); if (eng_Designation_Name == null) { return NotFound(); } return View(eng_Designation_Name); } // GET: Eng_Designation_Name/Create public IActionResult Create() { return View(); } // POST: Eng_Designation_Name/Create [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create([Bind("Designation_Names_Id,Designation_Names,AddBy,AddDate")] Eng_Designation_Name eng_Designation_Name) { if (ModelState.IsValid) { eng_Designation_Name.AddDate = DateTime.Now; eng_Designation_Name.AddBy = User.Identity.Name; _context.Add(eng_Designation_Name); await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); } return View(eng_Designation_Name); } // GET: Eng_Designation_Name/Edit/5 public async Task<IActionResult> Edit(int? id) { if (id == null || _context.Eng_Designation_Name == null) { return NotFound(); } var eng_Designation_Name = await _context.Eng_Designation_Name.FindAsync(id); if (eng_Designation_Name == null) { return NotFound(); } return View(eng_Designation_Name); } // POST: Eng_Designation_Name/Edit/5 [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Edit(int id, [Bind("Designation_Names_Id,Designation_Names,AddBy,AddDate")] Eng_Designation_Name eng_Designation_Name) { if (id != eng_Designation_Name.Designation_Names_Id) { return NotFound(); } if (ModelState.IsValid) { try { eng_Designation_Name.AddDate = DateTime.Now; eng_Designation_Name.AddBy = User.Identity.Name + " Edit"; _context.Update(eng_Designation_Name); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!Eng_Designation_NameExists(eng_Designation_Name.Designation_Names_Id)) { return NotFound(); } else { throw; } } return RedirectToAction(nameof(Index)); } return View(eng_Designation_Name); } // GET: Eng_Designation_Name/Delete/5 public async Task<IActionResult> Delete(int? id) { if (id == null || _context.Eng_Designation_Name == null) { return NotFound(); } var eng_Designation_Name = await _context.Eng_Designation_Name .FirstOrDefaultAsync(m => m.Designation_Names_Id == id); if (eng_Designation_Name == null) { return NotFound(); } return View(eng_Designation_Name); } // POST: Eng_Designation_Name/Delete/5 [HttpPost, ActionName("Delete")] [ValidateAntiForgeryToken] public async Task<IActionResult> DeleteConfirmed(int id) { if (_context.Eng_Designation_Name == null) { return Problem("Entity set 'TEEPOEEAppDBContext.Eng_Designation_Names' is null."); } var eng_Designation_Name = await _context.Eng_Designation_Name.FindAsync(id); if (eng_Designation_Name != null) { _context.Eng_Designation_Name.Remove(eng_Designation_Name); } await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); } private bool Eng_Designation_NameExists(int id) { return _context.Eng_Designation_Name.Any(e => e.Designation_Names_Id == id); } // POST: Eng_Designation_Name/Create [HttpPost] [ValidateAntiForgeryToken] public async Task<IActionResult> Create([Bind("Designation_Names_Id,Designation_Names,AddBy,AddDate")] Eng_Designation_Name eng_Designation_Name) { if (ModelState.IsValid) { eng_Designation_Name.AddDate = DateTime.Now; eng_Designation_Name.AddBy = User.Identity.Name; _context.Add(eng_Designation_Name); await _context.SaveChangesAsync(); return RedirectToAction(nameof(Index)); } return View(eng_Designation_Name); } } }
错误原因及解决办法
1. 控制器与模型类名冲突
你的控制器类名和模型类名完全一致(都是Eng_Designation_Name),编译器会优先将代码中的Eng_Designation_Name识别为控制器类型,而非模型类型,导致无法找到模型的AddDate和AddBy属性。
解决: 修改控制器类名,遵循ASP.NET Core规范,给控制器类添加Controller后缀:
namespace TEEPOEEApp.Controllers { public class Eng_Designation_NameController : Controller { // 原有代码保持不变 } }
2. 重复定义Create方法
控制器中重复实现了两个POST类型的Create方法,这不仅会导致路由冲突,还可能干扰编译器的类型解析逻辑。
解决: 删除其中一个重复的Create方法,仅保留一个即可。
3. 额外排查步骤
- 确认模型命名空间
TEEPOEEApp.Models已在控制器中正确引用(你的代码中已添加using TEEPOEEApp.Models;,此部分无问题); - 清理项目缓存:删除项目目录下的
bin和obj文件夹,然后执行清理解决方案和重新生成解决方案; - 检查DbContext和模型类的属性拼写,确保
AddDate、AddBy等属性名完全一致。
内容的提问来源于stack exchange,提问作者Roberto Londono

