Ini mungkin masalah pemborosan waktu terbesar yang telah saya habiskan berjam-jam untuk memecahkannya dalam waktu yang lama.
var db = new hublisherEntities();
establishment_brands est = new establishment_brands();
est.brand_id = 1;
est.establishment_id = 1;
est.price = collection["price"];
est.size = collection["size"];
db.establishment_brands.Add(est);
db.SaveChanges();
Ini memberi saya kesalahan
Nilai tidak boleh nol. Nama parameter: sumber
stacktrace dari
[ArgumentNullException: Nilai tidak boleh nol. Nama parameter: sumber] System.Linq.Enumerable.Any (IEnumerable
1 source, Func
2 predicate) +4083335 System.Data.Entity.Internal.InternalContext.WrapUpdateException (UpdateException updateException) +87
System.Data.Entity.Internal.InternalContext.SaveChanges () + 193
System.Data.Entity.Internal.LazyInternalContext.SaveChanges () +33
System.Data.Entity.DbContext.SaveChanges () +20 ... ...
Saya hanya ingin menambahkan entitas ke tabel. ORM adalah EF.
c#
asp.net-mvc
entity-framework
danielovich
sumber
sumber
Jawaban:
Saya punya yang ini beberapa waktu lalu, dan jawabannya belum tentu seperti yang Anda harapkan. Pesan kesalahan ini sering muncul ketika string koneksi Anda salah.
Dengan tebakan, Anda memerlukan sesuatu seperti ini:
Apa yang terjadi adalah mencari sumber data di tempat yang salah; Entity Framework menetapkannya sedikit berbeda. Jika Anda memposting string koneksi dan konfigurasi EF maka kami dapat memeriksanya.
sumber
Di suatu tempat di dalam DbContext adalah nilai yang
IEnumerable
ditanyakanAny()
(atauWhere()
atauSelect()
metode LINQ lainnya), tetapi nilai ini adalahnull
.Cari tahu apakah Anda menempatkan kueri bersama-sama (di suatu tempat di luar kode contoh Anda) di mana Anda menggunakan metode-LINQ, atau bahwa Anda menggunakan
IEnumerable
sebagai parameter yaitu NULL.sumber
.Where()
- masihnull
.Alasan saya berbeda dengan yang lain di sini, jadi saya pikir saya akan mempostingnya untuk siapa pun yang mungkin memiliki masalah ini.
Saya menelepon Hitung pada contoh DbSet dengan filter null yaitu
Saya menemukan bahwa melewatkan nol di sini menyebabkan kesalahan jadi saya sekarang memanggil metode tanpa parameter jika filternya nol:
Ini menyelesaikan masalah bagi saya. Ini mungkin menjadi masalah untuk metode lain di DbSet juga.
sumber
Aku baru saja kesalahan yang tepat ini di Net Inti 2.2 Entity Framework karena saya tidak punya
set;
di sayaDbContext
seperti:diubah menjadi:
Namun, itu tidak menunjukkan pengecualian sampai saya mencoba menggunakan kueri linq dengan
Where()
danSelect()
seperti yang disebutkan orang lain di atas.Saya mencoba menyetel
DbSet
sebagai hanya baca. Saya akan terus mencoba ...sumber
hanya sebagai FYI, seseorang mungkin merasa berguna. Saya mengejar ekor saya untuk kesalahan ini hampir 2 hari dan selalu memikirkan sesuatu yang besar dan mencari kelas yang mungkin menjadi masalah dan akhirnya saya menemukan masalah yang sangat bodoh dan itu ada di kode mark up (HTML) saya di mypage.ascx . Masalahnya adalah saya memiliki
<asp:EntityDataSource>
dan ini telah mendapat properti termasuk dan saya memiliki beberapa tabel lain yang tercantum di sini dan keliru tabel ada di sana yang telah dihapus dari database baru-baru ini dan saya tidak pernah memperhatikan dan mengembalikan null dengan entitas lain. Saya baru saja menghapus tabel bodoh dari daftar penyertaan dan saya siap melakukannya. berharap ini bisa membantu seseorang.sumber
Jika ada orang lain yang berakhir di sini dengan masalah saya dengan pengaturan Framework Entitas Pertama DB.
Singkat cerita, saya perlu membebani konstruktor Entitas untuk menerima string koneksi, alasannya adalah kemampuan untuk menggunakan wadah injeksi ketergantungan Asp.Net Core menarik string koneksi dari appsettings.json, daripada secara ajaib mendapatkannya dari App.config file saat memanggil konstruktor tanpa parameter.
Saya lupa menambahkan panggilan untuk menginisialisasi DbSets saya di overload baru. Jadi, konstruktor tanpa parameter yang dibuat secara otomatis terlihat seperti ini:
Dan kelebihan baru saya terlihat seperti ini:
Solusinya adalah menambahkan penginisialisasi yang ditangani oleh kode yang dibuat secara otomatis, sebuah langkah sederhana yang terlewat:
Ini benar-benar melemparkan saya untuk loop karena beberapa panggilan di Respository kami yang menggunakan DbContext bekerja dengan baik (yang tidak membutuhkan DBSets yang diinisialisasi), dan yang lainnya membuang kesalahan runtime yang dijelaskan dalam OP.
sumber
Pastikan Anda memasukkan repositori ke konstruktor layanan. Itu menyelesaikannya untuk saya. :: menampar dahi ::
sumber
Pengecualian ini akan dikembalikan jika Anda mencoba menghitung nilai dalam koleksi null.
Misalnya di bawah ini berfungsi ketika Kesalahan bukan nol, namun jika Kesalahan adalah nol maka Nilai tidak boleh nol. Nama parameter: pengecualian sumber terjadi.
Pengecualian ini dapat dihindari dengan memeriksa null sebagai gantinya.
sumber
Diatasi dengan solusi berikut
edmx
file tersebut, pilih Open with, XML editoredmx:StorageModels
elemenDefiningQuery
seluruhnyastore:Schema="dbo"
menjadiSchema="dbo"
(jika ada)store:Name
propertisumber
Ini bisa menjadi konyol seperti dalam kasus saya di mana perubahan savech error karena db tidak memiliki kunci asing dan asosiasi ditambahkan ke tabel EDM. Saya menambahkan kunci asing di db dan membuat EDM untuk perbaikan.
Kesalahan yang saya lihat adalah sebagai berikut: Kasus 1 -> saat menggunakan DBContext untuk Pesan EDM = Nilai tidak boleh kosong. Nama parameter: sumber di System.Linq.Enumerable.Any [TSource] (IEnumerable
1 source, Func
2 predicate)Kasus 2 -> saat menggunakan ObjectContext untuk EDM Message = Tidak dapat memperbarui 'Kontak' EntitySet karena memiliki DefiningQuery dan tidak ada elemen dalam elemen untuk mendukung operasi saat ini.
(Hanya ingin membuangnya ke sana kalau-kalau itu membantu seseorang).
sumber
Di MVC, layar View memanggil metode yang ada di Controller atau Repository.cs dan menetapkan nilai kembali ke kontrol apa pun di CSHTML tetapi metode itu sebenarnya tidak diterapkan di .cs / controller, kemudian CSHTML akan menampilkan pengecualian parameter NULL
sumber
Saya mendapat kesalahan ini ketika saya memiliki Jenis yang tidak valid untuk properti entitas.
Ketika saya menghapus properti, kesalahan berhenti terjadi.
sumber
Dalam kasus saya, masalah muncul saat mengkonfigurasi aplikasi web di IIS, Ketika perintah pembaruan pada catatan apa pun dipecat, kesalahan ini dihasilkan.
Itu adalah masalah izin di App_Data yang disetel ke hanya baca. Klik kanan folder, hapus centang pada kotak centang Read-only dan Anda selesai. Ngomong-ngomong, untuk tujuan pengujian, saya menggunakan database localdb yang ada di folder App_Data.
sumber
Kesalahan saya adalah lupa menambahkan .ThenInclude (s => s.SubChildEntities) ke induk .Include (c => c.SubChildEntities) ke tindakan Controller ketika mencoba memanggil SubChildEntities dalam tampilan Razor.
Perlu dicatat bahwa Visual Studio 2017 Community's IntelliSense tidak mengambil objek SubChildEntities di ekspresi lambda di .ThenInclude (). Itu berhasil mengkompilasi dan mengeksekusi sekalipun.
sumber
Saya tahu ini masih jauh dari tahun 2013 pertanyaan, tetapi gejala ini dapat muncul jika Anda tidak mengaktifkan pemuatan lambat saat memigrasi aplikasi ASP.NET 5 ke ASP.NET Core, dan kemudian mencoba meningkatkan ke Entity Framework Core 2.x (dari EF 6). Entity Framework Core telah memindahkan dukungan proxy pemuatan lambat ke paket terpisah , jadi Anda harus menginstalnya.
Ini terutama benar jika semua yang Anda muat adalah paket Entity Framework Core Sql Server (yang mengaktifkan Entity Framework dengan baik).
Setelah menginstal paket proxy, kemudian, seperti yang dikatakan oleh dokumen, panggil
.UseLazyLoadingProxies()
pada pembuat opsi DbContext (di bagian penyiapan Startup DI Anda, atau di mana pun Anda mengonfigurasi DbContext), dan properti navigasi yang menampilkan pengecualian di atas akan berhenti membuangnya, dan akan berfungsi seperti Entity Framework 6 dulu.sumber
Saya memiliki masalah yang sama dengan XUnit. Masalahnya ada pada koneksi database saya. Periksa apakah string koneksi Anda benar atau tidak.
sumber
Dan, dalam kasus saya, saya salah mendefinisikan dua kolom berbeda saya sebagai identitas pada konfigurasi DbContext seperti di bawah ini,
Ketika saya memperbaikinya seperti di bawah ini,
Saya juga telah menyingkirkan kesalahan ini.
sumber
Ambil Row dalam database dan buat semua kolom null di baris itu seperti ini "NULL". Sekarang teruskan nilai NULL itu menggunakan try catch atau if else.
sumber