Pengendali:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MvcApplication1.Models;
using System.ComponentModel.DataAnnotations.Schema;
namespace MvcApplication1.Controllers
{
public class studentsController : Controller
{
//
// GET: /students/
public ActionResult details()
{
int id = 16;
studentContext std = new studentContext();
student first = std.details.Single(m => m.RollNo == id);
return View(first);
}
}
}
DbContext Model:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace MvcApplication1.Models
{
public class studentContext : DbContext
{
public DbSet<student> details { get; set; }
}
}
Model:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations.Schema;
namespace MvcApplication1.Models
{
[Table("studentdetails")]
public class student
{
public int RollNo;
public string Name;
public string Stream;
public string Div;
}
}
Tabel database:
CREATE TABLE [dbo].[studentdetails](
[RollNo] [int] NULL,
[Name] [nvarchar](50) NULL,
[Stream] [nvarchar](50) NULL,
[Div] [nvarchar](50) NULL
)
Di global.asax.cs
Database.SetInitializer<MvcApplication1.Models.studentContext>(null);
Kode di atas mencantumkan semua kelas yang saya kerjakan. Saat menjalankan aplikasi saya menerima kesalahan:
"Satu atau lebih kesalahan validasi terdeteksi selama pembuatan model" bersama dengan "Jenis entitas tidak memiliki kunci yang ditentukan".
c#
.net
entity-framework
Coder
sumber
sumber
Jawaban:
Kelas Model harus diubah menjadi:
sumber
[Key]
) hingga saya mengubah tipe data (saya mengubahnyaunsigned
) dan hanya byte yang bekerja, apakah ada alasan saya tidak dapat menggunakanunsigned
nilai?Pastikan anggota yakin masyarakat siswa kelas didefinisikan sebagai sifat w /
{get; set;}
(Anda adalah publik variabel - kesalahan umum).Tempatkan
[Key]
anotasi di atas properti yang Anda pilih.sumber
Ada beberapa alasan mengapa hal ini bisa terjadi. Beberapa di antaranya saya temukan di sini , yang lain saya temukan sendiri.
Id
, Anda perlu menambahkan[Key]
atribut ke sana.public
uint
,ulong
dll. Tidak diperbolehkan.sumber
private set
dari beberapa properti selama pembersihan. Hasilnya adalah "EntityType tidak memiliki kesalahan kunci yang ditentukan". Jadi waspadalah terhadap alat pembersihan menghapus kode yang diperlukan.ID
,Id
,ClassNameID
,ClassNameId
Anda tidak perlu harus menggunakan[Key] attribute
saya tahu bahwa posting ini terlambat tetapi solusi ini membantu saya:
ditambahkan [Kolom (Urutan = 0)] setelah [Kunci] dapat ditambahkan dengan selisih 1:
dll ...
sumber
Dalam kasus saya, saya mendapatkan kesalahan saat membuat "MVC 5 Controller with view, menggunakan Entity Framework".
Saya hanya perlu membangun proyek setelah membuat kelas Model dan tidak perlu menggunakan anotasi [Kunci].
sumber
Menggunakan [tombol] tidak berhasil untuk saya tetapi menggunakan properti id melakukannya. Saya hanya menambahkan properti ini di kelas saya.
sumber
[Key]
, tetapi properti yang disebut "id
" juga akan berfungsi.Objek harus berisi bidang yang akan digunakan sebagai
Primary Key
, jika Anda memiliki bidang bernamaId
maka ini secara default akan menjadi kunci utama dari objek yang akan ditautkan dengan Kerangka Entitas.Jika tidak, Anda harus menambahkan
[Key]
atribut di atas bidang yang ingin Anda gunakan sebagaiPrimary Key
, dan Anda juga perlu menambahkan namespaceSystem.ComponentModel.DataAnnotations
:https://stackoverflow.com/a/51180941/7003760
sumber
Selain itu Ingat, Jangan lupa untuk menambahkan kata kunci publik seperti ini
Anda harus menggunakan kata kunci Publik seperti ini
sumber
Alasan mengapa kerangka kerja EF meminta 'tidak ada kunci' adalah bahwa kerangka kerja EF membutuhkan kunci utama dalam basis data. Untuk memberi tahu secara deklaratif pada EF properti mana kuncinya, Anda menambahkan
[Key]
anotasi. Atau, cara tercepat, tambahkanID
properti. Kemudian, kerangka kerja EF akan mengambilID
sebagai kunci utama secara default.sumber
partial
kelas. Anda dapat membuat file kedua sebagaipartial
kelas dengan nama yang sama, dan menambahkan properti lagi dengan[Key]
atribut.Anda tidak harus menggunakan atribut kunci sepanjang waktu. Pastikan file pemetaan ditujukan dengan benar
dan jangan lupa untuk menambahkan pemetaan di OnModelCreating Repositori
sumber
Bagi saya, modelnya baik-baik saja. Itu karena saya punya 2 versi kerangka kerja yang berbeda. Satu versi untuk proyek web dan satu lagi untuk proyek umum yang berisi model.
Saya hanya perlu mengkonsolidasikan paket nuget .
Nikmati!
sumber
Semua benar tetapi dalam kasus saya, saya memiliki dua kelas seperti ini
Setelah menghapus kelas atas itu berfungsi dengan baik untuk saya.
sumber