Dalam aplikasi Silverlight saya, saya mencoba membuat koneksi database menggunakan LINQ. Pertama saya menambahkan LINQ baru ke kelas SQL, dan menyeret tabel saya yang disebut "tblPersoon" ke dalamnya.
Kemudian di file layanan saya, saya mencoba menjalankan kueri berikut:
[OperationContract]
public tblPersoon GetPersoonByID(string id)
{
var query = (from p in tblPersoon where p.id == id select p).Single();
Tapi di tblPersoon, saya mendapat error berikut.
Tidak dapat menemukan implementasi pola kueri untuk jenis sumber 'SilverlightApplication1.Web.tblPersoon'. 'Dimana' tidak ditemukan.
Dan bahkan ketika saya mencoba yang berikut ini:
var query = (from p in tblPersoon select p).Single();
Ini memberi saya kesalahan mengatakan 'Pilih' tidak ditemukan!
Kode untuk kelas yang dihasilkan untuk tabel saya dapat ditemukan di sini: http://pastebin.com/edx3XRhi
Apa yang menyebabkan ini dan bagaimana saya bisa mengatasinya?
Terima kasih.
public System.Data.Linq.Table<tblPersoon> tblPersoons { get { return this.GetTable<tblPersoon>(); } }
Dan ketika saya menggunakan: var query = (dari p di tblPersoon.Cast <Person> () pilih p) .Single (); Ini memberi saya kesalahan berikut pada .Cast. 'SilverlightApplication1.Web.tblPersoon' tidak mengandung definisi untuk 'Cast'tblPersoons
(perhatikan s di akhir) sedangkan tipe adalahtblPersoon
. Anda tipe kueri, bukan properti pada tipe.var query = (from p in tblPersoons select p).Single();
Ini memberi tahu saya tblPersoons bahkan tidak ada.Anda mungkin perlu menambahkan
using
pernyataan ke file. Templat kelas Silverlight default tidak menyertakannya:using System.Linq;
sumber
Pastikan referensi ini disertakan:
Kemudian tambahkan pernyataan use
using System.Linq;
sumber
Saya memiliki masalah serupa dengan kumpulan data yang diketik dengan kuat, pesan kesalahan lengkapnya adalah:
Dari kode saya:
var x = from row in ds.InvcHead where row.Company == Session.CompanyID select row;
Jadi saya melakukan seperti yang disarankan dan secara eksplisit menentukan jenisnya:
var x = from MyApp.InvcHeadRow row in ds.InvcHead where row.Company == Session.CompanyID select row;
Yang berhasil.
sumber
Anda kehilangan kesetaraan:
var query = (from p in tblPersoon where p.id == 5 select p).Single();
where
klausa harus menghasilkan boolean.ATAU Anda tidak boleh menggunakan
where
sama sekali:var query = (from p in tblPersoon select p).Single();
sumber
Saya mengalami kesalahan yang sama seperti yang dijelaskan oleh judul, tetapi bagi saya itu hanya menginstal akses Microsoft 12.0 oledb yang dapat didistribusikan ulang untuk digunakan dengan LinqToExcel.
sumber
Hai, cara termudah untuk melakukannya adalah dengan mengubah IEnumerable ini menjadi Querizable
Jika itu dapat dikueri, maka melakukan kueri menjadi mudah.
Silakan periksa kode ini:
var result = (from s in _ctx.ScannedDatas.AsQueryable() where s.Data == scanData select s.Id).FirstOrDefault(); return "Match Found";
Pastikan Anda menyertakan System.Linq . Dengan cara ini kesalahan Anda akan teratasi.
sumber
Bagi Anda (seperti saya) yang terlalu banyak menyia-nyiakan waktu dari kesalahan ini:
Saya telah menerima kesalahan yang sama: "Tidak dapat menemukan implementasi Pola kueri untuk jenis sumber 'DbSet'" tetapi solusi bagi saya adalah memperbaiki kesalahan pada tingkat DbContext.
Ketika saya membuat konteks saya, saya memiliki ini:
public class ContactContext : DbContext { public ContactContext() : base() { } public DbSet Contacts { get; set; } }
Dan Repositori saya (saya mengikuti pola Repositori dalam panduan ASP.NET) terlihat seperti ini:
public Contact FindById(int id) { var contact = from c in _db.Contacts where c.Id == id select c; return contact; }
Masalah saya berasal dari pengaturan awal DbContext saya, ketika saya menggunakan DbSet sebagai generik dan bukan tipe.
Saya berubah
public DbSet Contacts { get; set; }
menjadipublic DbSet<Contact> Contacts { get; set; }
dan tiba-tiba permintaan itu dikenali.Ini mungkin yang km katakan dalam jawabannya, tetapi karena dia menyebutkan
IEnumerable<t>
dan tidak,DbSet<<YourDomainObject>>
saya harus menggali kode selama beberapa jam untuk menemukan baris yang menyebabkan sakit kepala ini.sumber
Saya mengalami kesalahan yang sama, tetapi bagi saya, itu dikaitkan dengan memiliki database dan tabel yang diberi nama sama. Ketika saya menambahkan ADO .NET Entity Object ke proyek saya, itu salah paham dengan apa yang saya inginkan dalam file konteks database saya:
// Table public virtual DbSet<OBJ> OBJs { get; set; }
yang seharusnya:
public virtual DbSet<OBJ> OBJ { get; set; }
Dan
// Database? public object OBJ { get; internal set; }
yang sebenarnya tidak terlalu saya butuhkan, jadi saya mengomentarinya.
Saya mencoba menarik tabel saya seperti ini, di pengontrol saya, ketika saya mendapatkan kesalahan saya:
protected Model1 db = new Model1(); public ActionResult Index() { var obj = from p in db.OBJ orderby p.OBJ_ID descending select p; return View(obj); }
Saya mengoreksi konteks database saya dan semuanya baik-baik saja, setelah itu.
sumber