คำถามติดแท็ก linq-to-entities

แท็กนี้มีไว้สำหรับคำถามเกี่ยวกับ LINQ to Entities ซึ่งหมายถึงการสืบค้น LINQ โดยใช้ ADO.NET Entity Framework โปรดทราบว่าสิ่งนี้แตกต่างจาก LINQ กับ SQL หรือผู้ให้บริการ LINQ อื่น ๆ

6
Entity Framework 4 Single () เทียบกับ First () เทียบกับ FirstOrDefault ()
ฉันมีปีศาจในการค้นหาการเปรียบเทียบวิธีต่างๆในการค้นหารายการเดียวและเวลาที่ควรใช้แต่ละรายการ ใครมีลิงค์ที่เปรียบเทียบสิ่งเหล่านี้ทั้งหมดหรือคำอธิบายสั้น ๆ ว่าทำไมคุณถึงใช้อันอื่น? ยังมีตัวดำเนินการอีกหรือไม่ที่ฉันไม่รู้จัก? ขอบคุณ.

13
วิธีการจัดเก็บรายการในคอลัมน์ของตารางฐานข้อมูล
ดังนั้นจากคำตอบของ Mehrdad สำหรับคำถามที่เกี่ยวข้องฉันเข้าใจว่าคอลัมน์ตารางฐานข้อมูล "ถูกต้อง" ไม่ได้เก็บรายการไว้ แต่คุณควรสร้างตารางอื่นที่เก็บองค์ประกอบของรายการดังกล่าวได้อย่างมีประสิทธิภาพจากนั้นเชื่อมโยงโดยตรงหรือผ่านตารางทางแยก อย่างไรก็ตามประเภทของรายการที่ฉันต้องการสร้างจะประกอบด้วยรายการที่ไม่ซ้ำกัน (ไม่เหมือนกับผลไม้ของคำถามที่เชื่อมโยงตัวอย่าง). นอกจากนี้รายการในรายการของฉันยังถูกจัดเรียงอย่างชัดเจนซึ่งหมายความว่าหากฉันเก็บองค์ประกอบไว้ในตารางอื่นฉันจะต้องจัดเรียงทุกครั้งที่เข้าถึง ในที่สุดรายการก็เป็นแบบปรมาณูเมื่อใดก็ตามที่ฉันต้องการเข้าถึงรายการฉันต้องการเข้าถึงรายการทั้งหมดแทนที่จะเป็นเพียงชิ้นส่วน - ดังนั้นจึงดูเหมือนโง่ที่ต้องออกแบบสอบถามฐานข้อมูลเพื่อรวบรวมชิ้นส่วนของ รายการ. โซลูชันของ AKX (ลิงก์ด้านบน) คือการทำให้รายการเป็นอนุกรมและจัดเก็บไว้ในคอลัมน์ไบนารี แต่สิ่งนี้ก็ดูเหมือนจะไม่สะดวกเช่นกันเพราะหมายความว่าฉันต้องกังวลเกี่ยวกับการทำให้เป็นอนุกรมและการแยกส่วน มีทางออกที่ดีกว่านี้หรือไม่? หากมีคือไม่มีทางออกที่ดีกว่าแล้วทำไม? ดูเหมือนว่าปัญหานี้จะเกิดขึ้นเป็นครั้งคราว ... ข้อมูลเพิ่มเติมเล็กน้อยเพื่อให้คุณรู้ว่าฉันมาจากไหน ทันทีที่ฉันเพิ่งเริ่มทำความเข้าใจ SQL และฐานข้อมูลโดยทั่วไปฉันก็เปิดใช้ LINQ เป็น SQL และตอนนี้ฉันรู้สึกเสียเล็กน้อยเพราะฉันคาดหวังว่าจะจัดการกับโมเดลอ็อบเจ็กต์การเขียนโปรแกรมของฉันโดยไม่ต้องคิดว่าอ็อบเจ็กต์ จะถูกสอบถามหรือเก็บไว้ในฐานข้อมูล ขอบคุณทุกคน! จอห์น อัปเดต: ดังนั้นในคำตอบแรกที่ฉันได้รับคำตอบฉันเห็นว่า "คุณสามารถไปเส้นทาง CSV / XML ได้ ... แต่อย่า!" ตอนนี้ฉันกำลังหาคำอธิบายว่าทำไม ชี้ให้ฉันดูข้อมูลอ้างอิงที่ดี นอกจากนี้เพื่อให้คุณมีความคิดที่ดีขึ้นว่าฉันกำลังทำอะไรอยู่: ในฐานข้อมูลของฉันฉันมีตารางฟังก์ชันที่จะมีรายการคู่ (x, y) (ตารางจะมีข้อมูลอื่น ๆ …

14
จะเปรียบเทียบเฉพาะวันที่จาก DateTime ใน EF ได้อย่างไร?
ฉันมีค่าวันที่สองค่าค่าหนึ่งเก็บไว้ในฐานข้อมูลแล้วและค่าอื่นที่ผู้ใช้เลือกโดยใช้ DatePicker กรณีการใช้งานคือการค้นหาวันที่ที่ต้องการจากฐานข้อมูล ค่าที่ป้อนก่อนหน้านี้ในฐานข้อมูลมักจะมีองค์ประกอบของเวลาคือ 12:00:00 น. โดยที่วันที่ที่ป้อนจากตัวเลือกจะมีส่วนประกอบของเวลาที่แตกต่างกัน ฉันสนใจเฉพาะส่วนประกอบวันที่และต้องการละเว้นองค์ประกอบเวลา การเปรียบเทียบนี้ใน C # มีวิธีใดบ้าง นอกจากนี้วิธีการทำใน LINQ อัปเดต: ใน LINQ ถึงเอนทิตีสิ่งต่อไปนี้ใช้งานได้ดี e => DateTime.Compare(e.FirstDate.Value, SecondDate) >= 0

4
LINQ to Entities ไม่รู้จักเมธอด
ฉันได้รับข้อผิดพลาดต่อไปนี้เมื่อพยายามทำแบบสอบถาม linq: LINQ เป็นเอนทิตีไม่รู้จักเมธอด 'Boolean IsCharityMatching (System.String, System.String)' และวิธีนี้ไม่สามารถแปลเป็นนิพจน์ที่เก็บ ฉันได้อ่านคำถามก่อนหน้านี้มากมายที่ผู้คนได้รับข้อผิดพลาดเดียวกันและถ้าฉันเข้าใจสิ่งนี้อย่างถูกต้องนั่นเป็นเพราะ LINQ to Entities ต้องการนิพจน์การค้นหา linq ทั้งหมดเพื่อแปลเป็นแบบสอบถามเซิร์ฟเวอร์ดังนั้นคุณจึงไม่สามารถเรียกวิธีการภายนอกได้ ในนั้น. ฉันยังไม่สามารถแปลงสถานการณ์ของฉันให้เป็นสิ่งที่ใช้งานได้และสมองของฉันก็เริ่มละลายลงดังนั้นฉันจึงหวังว่าจะมีใครบางคนชี้ฉันไปในทิศทางที่ถูกต้อง เรากำลังใช้ Entity Framework และรูปแบบข้อกำหนด (และฉันยังใหม่สำหรับทั้งสองอย่าง) นี่คือรหัสที่ใช้ข้อกำหนด: ISpecification<Charity> specification = new CharitySearchSpecification(charityTitle, charityReference); charities = charitiesRepository.Find(specification).OrderBy(p => p.RegisteredName).ToList(); นี่คือนิพจน์ linq: public System.Linq.Expressions.Expression<Func<Charity, bool>> IsSatisfied() { return p => p.IsCharityMatching(this.charityName, this.charityReference); } นี่คือวิธี IsCharityMatching: …

8
LINQ กับเอนทิตีการเปรียบเทียบแบบคำนึงถึงขนาดตัวพิมพ์
นี่ไม่ใช่การเปรียบเทียบแบบคำนึงถึงขนาดตัวพิมพ์ใน LINQ กับเอนทิตี: Thingies.First(t => t.Name == "ThingamaBob"); ฉันจะเปรียบเทียบกรณีที่สำคัญกับ LINQ กับเอนทิตีได้อย่างไร

8
วิธีที่ดีที่สุดในการตรวจสอบว่ามีวัตถุอยู่ใน Entity Framework หรือไม่?
วิธีใดที่ดีที่สุดในการตรวจสอบว่ามีวัตถุอยู่ในฐานข้อมูลจากมุมมองด้านประสิทธิภาพหรือไม่ ฉันใช้ Entity Framework 1.0 (ASP.NET 3.5 SP1)

10
ไม่สนับสนุนสมาชิกประเภทที่ระบุ 'วันที่' ใน LINQ ถึง Entities Exception
ฉันได้รับข้อยกเว้นขณะใช้ข้อความต่อไปนี้ DateTime result; if (!DateTime.TryParse(rule.data, out result)) return jobdescriptions; if (result < new DateTime(1754, 1, 1)) // sql can't handle dates before 1-1-1753 return jobdescriptions; return jobdescriptions.Where(j => j.JobDeadline.Date == Convert.ToDateTime(rule.data).Date ); ข้อยกเว้น The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and …

8
ประเภทหรือชื่อเนมสเปซ 'วัตถุ' ไม่มีอยู่ในเนมสเปซ 'System.Data'
ฉันใช้เอนทิตี C # และ SQL Server เพื่อสร้างแอป n-tier ฉันกำลังสร้างคลาสพื้นฐานที่ใช้ร่วมกันกับส่วนประกอบ DAL ทั้งหมดของฉัน ในคลาสฐานนี้ฉันต้องการจัดการสถานะการเชื่อมต่อของคลาสฐาน ObjectContext ที่สืบทอดมาโดยอ็อบเจ็กต์เอนทิตี การคอมไพล์ทำให้เกิดข้อผิดพลาดต่อไปนี้: ชนิดหรือชื่อเนมสเปซ 'ออบเจ็กต์' ไม่มีอยู่ในเนมสเปซ 'System.Data' (คุณไม่มีการอ้างอิงแอสเซมบลีหรือไม่) นอกจากนี้คำสั่งใช้ System.Data.Objects ไม่สามารถแก้ไขได้ด้วยเหตุผลเดียวกัน ฉันพยายามเพิ่มแอสเซมบลีเป็นข้อมูลอ้างอิง แต่ไม่พบในแท็บ. NET ของการอ้างอิงแอสเซมบลี ความคิดใด ๆ ? ขอบคุณ!


9
ชอบ Operator ใน Entity Framework หรือไม่?
เรากำลังพยายามใช้ตัวดำเนินการ "LIKE" ใน Entity Framework สำหรับเอนทิตีของเราที่มีฟิลด์สตริง แต่ดูเหมือนว่าจะไม่ได้รับการสนับสนุน มีใครลองทำอะไรแบบนี้บ้าง? นี้โพสต์บล็อกสรุปปัญหาที่เรากำลังมี เราสามารถใช้มี แต่ตรงกับกรณีที่ไม่สำคัญที่สุดสำหรับ LIKE เท่านั้น การรวมประกอบด้วย, เริ่มต้นด้วย, สิ้นสุดด้วยและดัชนีของเราทำให้เราไปที่นั่นได้ แต่ต้องมีการแปลระหว่างอักขระตัวแทนมาตรฐานและรหัส Linq เป็นเอนทิตี

10
C # - รหัสเพื่อเรียงลำดับตามคุณสมบัติโดยใช้ชื่อคุณสมบัติเป็นสตริง
อะไรคือวิธีที่ง่ายที่สุดในการโค้ดเทียบคุณสมบัติใน C # เมื่อฉันมีชื่อคุณสมบัติเป็นสตริง ตัวอย่างเช่นฉันต้องการอนุญาตให้ผู้ใช้จัดลำดับผลการค้นหาตามคุณสมบัติที่ต้องการ (โดยใช้ LINQ) พวกเขาจะเลือกคุณสมบัติ "เรียงลำดับตาม" ใน UI - เป็นค่าสตริงแน่นอน มีวิธีใช้สตริงนั้นโดยตรงเป็นคุณสมบัติของคิวรี linq โดยไม่ต้องใช้ตรรกะเงื่อนไข (if / else, switch) เพื่อแม็พสตริงกับคุณสมบัติ การสะท้อนกลับ? ตามหลักเหตุผลนี่คือสิ่งที่ฉันต้องการทำ: query = query.OrderBy(x => x."ProductId"); อัปเดต: เดิมทีฉันไม่ได้ระบุว่าฉันใช้ Linq เป็นเอนทิตี - ดูเหมือนว่าการสะท้อน (อย่างน้อยก็คือวิธี GetProperty, GetValue) ไม่ได้แปลเป็น L2E

1
ไม่สามารถแปลวิธีการเป็นนิพจน์ร้านค้า
ฉันเห็นรหัสนี้ทำงานกับ LINQ ถึง SQL แต่เมื่อฉันใช้ Entity Framework มันแสดงข้อผิดพลาดนี้: LINQ เป็นเอนทิตีไม่รู้จักเมธอด 'System.Linq.IQueryable'1 [MyProject.Models.CommunityFeatures] GetCommunityFeatures ()' เมธอดและเมธอดนี้ไม่สามารถแปลเป็นนิพจน์ร้านค้าได้ รหัสที่เก็บคือ: public IQueryable<Models.Estate> GetEstates() { return from e in entity.Estates let AllCommFeat = GetCommunityFeatures() let AllHomeFeat = GetHomeFeatures() select new Models.Estate { EstateId = e.EstateId, AllHomeFeatures = new LazyList<HomeFeatures>(AllHomeFeat), AllCommunityFeatures = new LazyList<CommunityFeatures>(AllCommFeat) }; } …

3
LINQ ไปยังเอนทิตีไม่รู้จักเมธอด 'System.String Format (System.String, System.Object, System.Object)'
ฉันมีแบบสอบถาม linq นี้: private void GetReceivedInvoiceTasks(User user, List<Task> tasks) { var areaIds = user.Areas.Select(x => x.AreaId).ToArray(); var taskList = from i in _db.Invoices join a in _db.Areas on i.AreaId equals a.AreaId where i.Status == InvoiceStatuses.Received && areaIds.Contains(a.AreaId) select new Task { LinkText = string.Format(Invoice {0} has been received from {1}, …

10
'มี ()' วิธีแก้ปัญหาโดยใช้ Linq ไปยังเอนทิตี?
ฉันกำลังพยายามสร้างแบบสอบถามที่ใช้รายการรหัสในส่วนคำสั่ง where โดยใช้ API ไคลเอนต์ Silverlight ADO.Net Data Services (และดังนั้น Linq To Entities) ไม่มีใครรู้วิธีแก้ปัญหาสำหรับการประกอบด้วยที่ไม่รองรับ? ฉันต้องการทำสิ่งนี้: List<long?> txnIds = new List<long?>(); // Fill list var q = from t in svc.OpenTransaction where txnIds.Contains(t.OpenTransactionId) select t; ลองสิ่งนี้: var q = from t in svc.OpenTransaction where txnIds.Any<long>(tt => tt == t.OpenTransactionId) select t; …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.