首页 > 解决方案 > ASP.Net 错误 System.InvalidOperationException

问题描述

我正在尝试制作可以管理客户的应用程序。所以我创建了数据库和表 tecnici,我可以在其中插入我所有的技术人员。

所有 CRUD 操作都有效,直到我创建表clienti来插入我的客户。我为 制作了控制器、模型和视图clienti,当我运行应用程序时,它给了我这个错误System.InvalidOperationException: '实体类型'Cliente'需要定义一个主键。如果您打算使用无密钥实体类型,请调用“HasNoKey()”。

ClientiController中的错误,当我尝试在 TecniciController 中加载所有客户端 ftom 表错误时,它给了我同样的错误 clienti

这是 ClientiController 的代码

public class ClientiController: Controller
    {
        private readonly AppDbContext _db;

        public ClientiController(AppDbContext db)
        {
            _db = db;
        }

        public IActionResult Index()
        {
            var datiClienti = _db.tboClienti.ToList();
            return View(datiClienti);
        }

        public IActionResult CreareCliente()
        {
            return View();
        }

        [HttpPost]
        public async Task<IActionResult> CreareCliente(Cliente cliente)
        {
            if (ModelState.IsValid)
            {
                _db.Add(cliente);
                await _db.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            return View(cliente);
        }
    }

这是模型客户

public class Cliente
    {
        [Required(ErrorMessage = "Inserisci il nome di proprietario della azienda")]
        [Display(Name = "Nome")]
        public string Nome { get; set; }

        [Required(ErrorMessage = "Inserisci il cognome di proprietario della azienda")]
        [Display(Name = "Cognome")]
        public string Cognome { get; set; }

        [Display(Name = "Azienda")]
        public string Nome_azienda { get; set; }

        [Required(ErrorMessage = "Inserisci numero  cellulare della Azienda")]
        [DataType(DataType.PhoneNumber)]
        [Display(Name = "Telefono")]
        [RegularExpression(@"^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$",
           ErrorMessage = "Numero non valido")]
        public string Cellulare { get; set; }
    }

我有我的连接字符串appsettings.json

这是我配置数据库的地方:

public class AppDbContext: DbContext
    {
        public AppDbContext(DbContextOptions<AppDbContext> options): base (options)
        {

        }

        public DbSet<Tecnico> tboTecnici { get; set; }
        public DbSet<Cliente> tboClienti { get; set; }
    }

直到只有一张桌子(桌子:)tecnici它没有给我带来问题。当我为表 tboClienti 创建控制器模型和视图时,它给了我错误。

这是表 tboClienti

这是 tboTecnici

任何建议如何解决这个问题。提前致谢!

标签: c#.netasp.net-mvc

解决方案


尝试在您的客户端类中定义一个主键。

[Key]
public int Id { get; set; }

推荐阅读