คำถามติดแท็ก entity-framework

สำหรับคำถามเกี่ยวกับ ADO.NET Entity Framework เครื่องมือ Object-Relational-Mapping (ORM) สำหรับ. NET Framework โปรดเพิ่มแท็กเฉพาะเวอร์ชันหากมี อย่าใช้แท็กนี้สำหรับคำถาม Entity-Framework-core ใช้ entity-framework-core แทน

4
Entity framework linq query รวม () เอนทิตีลูกหลายรายการ
นี่อาจเป็นคำถามที่เข้าใจง่ายมาก แต่วิธีที่ดีในการรวมหลายเอนทิตีเด็กเมื่อเขียนเคียวรีที่ครอบคลุมสามระดับ (หรือมากกว่านั้น) คืออะไร คือผมมี 4 ตาราง: Company, Employee, Employee_CarและEmployee_Country บริษัท มีความสัมพันธ์แบบ 1: m กับพนักงาน พนักงานมีความสัมพันธ์แบบ 1: m กับ Employee_Car และ Employee_Country ถ้าฉันต้องการเขียนแบบสอบถามที่ส่งคืนข้อมูลจากทั้ง 4 ตารางฉันกำลังเขียน: Company company = context.Companies .Include("Employee.Employee_Car") .Include("Employee.Employee_Country") .FirstOrDefault(c => c.Id == companyID); จะต้องมีวิธีที่สง่างามมากขึ้น! นี่เป็นเวลานานและสร้าง SQL ที่น่ากลัว ฉันใช้ EF4 กับ VS 2010

11
ค่าส่งคืนสูงสุดหากแบบสอบถามว่างเปล่า
ฉันมีคำถามนี้: int maxShoeSize = Workers .Where(x => x.CompanyId == 8) .Max(x => x.ShoeSize); จะเกิดอะไรขึ้นmaxShoeSizeถ้า บริษัท 8 ไม่มีพนักงานเลย? อัปเดต: ฉันจะเปลี่ยนคิวรีได้อย่างไรเพื่อให้ได้ 0 และไม่ใช่ข้อยกเว้น

7
Entity Framework ย้อนกลับและลบการโยกย้ายที่ไม่ดี
ฉันใช้ EF 6.0 สำหรับโครงการของฉันใน C # ด้วยการโยกย้ายและการปรับปรุงด้วยตนเอง ฉันมีการโยกย้ายประมาณ 5 บนฐานข้อมูล แต่ฉันรู้ว่าการโยกย้ายครั้งสุดท้ายไม่ดีและฉันไม่ต้องการ ฉันรู้ว่าฉันสามารถย้อนกลับไปยังการโยกย้ายครั้งก่อนได้ แต่เมื่อฉันเพิ่มการโยกย้าย (คงที่) ใหม่และเรียกใช้ Update-Database แม้แต่การโยกย้ายที่ไม่ดีก็ถูกนำไปใช้ ฉันพยายามย้อนกลับการโยกย้ายครั้งก่อนและลบไฟล์ด้วยการโยกย้ายที่ไม่ดี แต่เมื่อฉันพยายามเพิ่มการย้ายข้อมูลใหม่ฉันได้รับข้อผิดพลาดเมื่ออัปเดตฐานข้อมูลเนื่องจากไฟล์การโยกย้ายเสียหาย (โดยเฉพาะอย่างยิ่งรหัสบรรทัดแรกเปลี่ยนชื่อตาราง A เป็น B และเป็นบรรทัดถัดไป EF พยายามอัปเดตตารางด้วย ชื่อ A - อาจเป็นข้อบกพร่องของ EF) มีคำถามที่ฉันสามารถเรียกใช้ซึ่งจะบอก EF ว่า "ลืมการย้ายข้อมูลครั้งล่าสุดแบบที่ไม่เคยมีมาหรือไม่เลว" สิ่งที่ต้องการลบการโยกย้าย Edit1 ฉันพบวิธีแก้ปัญหาที่เหมาะสมสำหรับฉัน เปลี่ยนโมเดลให้อยู่ในสภาพดีและวิ่งAdd-Migration TheBadMigration -Forceได้ การดำเนินการนี้จะนำไปสู่การนั่งร้านใหม่ไม่ใช่การย้ายที่ใช้ อย่างไรก็ตามเรื่องนี้ยังไม่สามารถตอบคำถามเดิมได้อย่างสมบูรณ์ หากฉันอัปเดตฐานข้อมูลไปยังการโยกย้ายที่ไม่ดีฉันไม่พบวิธีที่ดีในการย้อนกลับและสร้างการย้ายข้อมูลใหม่ไม่รวมถึงการย้ายที่ไม่ดี ขอบคุณ

9
บริการควรส่งคืน DTO เสมอหรือพวกเขาสามารถส่งคืนโมเดลโดเมนได้หรือไม่
ฉันกำลังออกแบบแอพพลิเคชั่นขนาดใหญ่อีกครั้งเราใช้สถาปัตยกรรมหลายชั้นที่ใช้ DDD เรามี MVC พร้อมชั้นข้อมูล (การใช้พื้นที่เก็บข้อมูล) ชั้นโดเมน (คำจำกัดความของรูปแบบโดเมนและอินเทอร์เฟซ - พื้นที่เก็บข้อมูลบริการหน่วยงาน) ชั้นบริการ (การนำบริการไปใช้) จนถึงตอนนี้เราใช้โมเดลโดเมน (เอนทิตีส่วนใหญ่) ครอบคลุมเลเยอร์ทั้งหมดและเราใช้ DTOs เป็นแบบจำลองการดูเท่านั้น (ในตัวควบคุมบริการส่งคืนโมเดลโดเมนและตัวควบคุมสร้างโมเดลการดูซึ่งส่งผ่านไปยังมุมมอง) ฉันได้อ่านบทความมากมายเกี่ยวกับการใช้ไม่ใช้การแมปและการผ่าน DTO ฉันเข้าใจว่าไม่มีคำตอบที่ชัดเจน แต่ฉันไม่แน่ใจว่ามันใช้ได้หรือไม่ส่งคืนโมเดลโดเมนจากบริการไปยังตัวควบคุม ถ้าฉันส่งคืนโมเดลโดเมนมันยังไม่เคยผ่านไปยังมุมมองเนื่องจากตัวควบคุมจะสร้างมุมมองเฉพาะมุมมองเสมอ - ในกรณีนี้มันดูเป็นเรื่องถูกกฎหมาย ในทางกลับกันมันไม่รู้สึกว่าถูกต้องเมื่อโมเดลโดเมนออกจากชั้นธุรกิจ (ชั้นบริการ) บางครั้งบริการจำเป็นต้องส่งคืนวัตถุข้อมูลที่ไม่ได้กำหนดไว้ในโดเมนและจากนั้นเราต้องเพิ่มวัตถุใหม่ไปยังโดเมนที่ไม่ได้ถูกแมปหรือสร้างวัตถุ POCO (นี่น่าเกลียดเนื่องจากบริการบางอย่างกลับโดเมนบางรุ่น ส่งคืน DTO อย่างมีประสิทธิภาพ) คำถามคือ - ถ้าเราใช้โมเดลการดูอย่างเคร่งครัดเป็นไรหรือไม่ที่จะส่งคืนโมเดลโดเมนไปยังตัวควบคุมหรือเราควรใช้ DTOs สำหรับการสื่อสารกับชั้นบริการเสมอหรือไม่ ถ้าเป็นเช่นนั้นจะเป็นการดีที่จะปรับรูปแบบโดเมนตามบริการที่ต้องการ (ตรงไปตรงมาฉันไม่คิดอย่างนั้นเพราะบริการควรใช้โดเมนใด) หากเราควรยึดติดกับ DTO อย่างเคร่งครัดควรกำหนดไว้ในเลเยอร์บริการหรือไม่ (ฉันคิดอย่างนั้น) บางครั้งก็ชัดเจนว่าเราควรใช้ DTOs (เช่นเมื่อบริการดำเนินการตรรกะทางธุรกิจจำนวนมากและสร้างวัตถุใหม่) บางครั้งก็ชัดเจนว่าเราควรใช้เพียงแค่รูปแบบโดเมน (เช่นเมื่อบริการสมาชิกส่งคืนผู้ใช้โลหิตจาง s) …

17
“ การรวบรวมรายการจะต้องว่างเปล่าก่อนที่จะใช้ ItemsSource”
ฉันพยายามที่จะได้รับภาพที่จะแสดงผลใน WPF ListView สไตล์เช่น WrapPanel ที่อธิบายไว้ในบทความเก่า ATC รีสอร์ตทีมนี้: วิธีการสร้างมุมมองที่กำหนดเอง เมื่อฉันพยายามที่จะเติม ListView ด้วยคอลเลกชันสอบถาม LINQ-to-Entities ของวัตถุ ADO.NET Entity Framework ฉันได้รับข้อยกเว้นดังต่อไปนี้: ข้อยกเว้น การรวบรวมรายการจะต้องว่างเปล่าก่อนที่จะใช้ ItemsSource รหัสของฉัน ... Visual Basic Private Sub Window1_Loaded(...) Handles MyBase.Loaded ListViewImages.ItemsSource = From g In db.Graphic _ Order By g.DateAdded Ascending _ Select g End Sub XAML <ListView Name="ListViewImages" SelectionMode="Single" …

14
ตรวจพบการอ้างอิงแบบวงกลมในขณะที่ซีเรียลไลซ์วัตถุประเภท 'SubSonic.Schema .DatabaseColumn'
ฉันกำลังพยายามส่งคืน JSON แบบง่าย ๆ แต่ฉันมีปัญหาฉันมีดังต่อไปนี้ public JsonResult GetEventData() { var data = Event.Find(x => x.ID != 0); return Json(data); } ฉันได้รับ HTTP 500 โดยมีข้อยกเว้นตามที่แสดงในชื่อของคำถามนี้ ฉันก็ลอง var data = Event.All().ToList() นั่นทำให้เกิดปัญหาเดียวกัน นี่เป็นข้อบกพร่องหรือการใช้งานของฉันหรือไม่?

11
การเชื่อมต่อที่ระบุชื่อที่ระบุไม่พบในการกำหนดค่าไม่ได้มีวัตถุประสงค์เพื่อใช้กับผู้ให้บริการ EntityClient หรือไม่ถูกต้อง
ฉันมีวัตถุเฟรมเวิร์กเอนทิตีหนึ่งและเมื่อฉันเพิ่มลงในโครงการของฉันconnectionstring ถูกเพิ่มไปยังapp.configในconnectionstringส่วน แต่เมื่อฉันต้องการสร้างใหม่entitycontextและใช้สิ่งconnectionstringนี้ข้อผิดพลาดนี้จะปรากฏขึ้น

11
การทดสอบหน่วยบุคคลด้วย Entity Framework 6 เป็นอย่างไรคุณควรใส่ใจ
ฉันเพิ่งเริ่มด้วยการทดสอบหน่วยและ TDD โดยทั่วไป ฉันเคยขยิบตามาก่อน แต่ตอนนี้ฉันมุ่งมั่นที่จะเพิ่มลงในเวิร์กโฟลว์ของฉันและเขียนซอฟต์แวร์ที่ดีขึ้น ฉันถามคำถามเมื่อวานว่าแบบนี้รวมอยู่ด้วย แต่ดูเหมือนจะเป็นคำถามของมันเอง ฉันนั่งลงเพื่อเริ่มใช้งานคลาสบริการที่ฉันจะใช้เพื่อสรุปตรรกะทางธุรกิจจากคอนโทรลเลอร์และแผนที่ไปยังโมเดลเฉพาะและการโต้ตอบของข้อมูลโดยใช้ EF6 ปัญหาคือฉันมีสิ่งกีดขวางบนถนนแล้วเพราะฉันไม่ต้องการแยก EF ออกจากที่เก็บ (มันจะยังคงให้บริการนอกบริการสำหรับข้อความค้นหาเฉพาะ ฯลฯ ) และต้องการทดสอบบริการของฉัน (จะใช้บริบทของ EF) . ที่นี่ฉันเดาเป็นคำถามมีจุดทำเช่นนี้หรือไม่ ถ้าเป็นเช่นนั้นผู้คนกำลังทำอะไรอยู่ในป่าท่ามกลางแสงของรอยรั่วที่เกิดจาก IQueryable และการโพสต์ที่ยอดเยี่ยมมากมายของLadislav Mrnkaในเรื่องของการทดสอบหน่วยไม่ตรงไปตรงมาเพราะความแตกต่างในผู้ให้บริการ Linq เมื่อทำงานกับหน่วยความจำ การนำไปใช้งานตามที่ระบุในฐานข้อมูลเฉพาะ รหัสที่ฉันต้องการทดสอบดูเหมือนง่ายมาก (นี่เป็นเพียงรหัสจำลองเพื่อลองและเข้าใจสิ่งที่ฉันกำลังทำอยู่ฉันต้องการผลักดันการสร้างโดยใช้ TDD) บริบท public interface IContext { IDbSet<Product> Products { get; set; } IDbSet<Category> Categories { get; set; } int SaveChanges(); } …

8
วัตถุ 'DF __ *' ขึ้นอยู่กับคอลัมน์ '*' - การเปลี่ยน int เป็นสองเท่า
โดยทั่วไปฉันได้รับตารางในฐานข้อมูล EF ที่มีคุณสมบัติดังต่อไปนี้: public int Id { get; set; } public string Title { get; set; } public string Description { get; set; } public string Image { get; set; } public string WatchUrl { get; set; } public int Year { get; set; } public string Source { get; …

5
Entity Framework - เริ่มใหม่ - เลิกทำ / ย้อนกลับการโอนย้ายทั้งหมด
ด้วยเหตุผลบางอย่างการย้ายถิ่นของฉันดูเหมือนจะเป็นปัญหา / เสียหาย / อะไรก็ตาม ฉันอยู่ในจุดที่ฉันต้องการเริ่มต้นใหม่ดังนั้นจึงมีวิธีการยกเลิกการโยกย้ายทั้งหมดลบประวัติและลบรหัสการโยกย้ายอย่างสมบูรณ์ดังนั้นฉันจึงกลับไปที่จตุรัสหนึ่งหรือไม่ เช่น) PM> Disable-MigrationsหรือRollback-Migrations ฉันไม่ต้องการ "อัปเดต" เป็นขั้นตอนการย้ายข้อมูลดั้งเดิม (เช่นบางสิ่งบางอย่างเหมือนInitialSchemaเป้าหมาย) เพราะฉันหาไม่พบอีกต่อไป

12
ไม่สามารถอ้างอิงเอนทิตีวัตถุโดย IEntityChangeTracker หลายอินสแตนซ์ ขณะที่เพิ่มวัตถุที่เกี่ยวข้องกับเอนทิตีใน Entity Framework 4.1
ฉันพยายามบันทึกรายละเอียดพนักงานซึ่งมีการอ้างอิงกับเมือง แต่ทุกครั้งที่ฉันพยายามบันทึกผู้ติดต่อของฉันซึ่งผ่านการตรวจสอบแล้วฉันจะได้รับการยกเว้น"ADO.Net Entity Framework วัตถุเอนทิตีไม่สามารถอ้างอิงได้ด้วยหลายอินสแตนซ์ของ IEntityChangeTracker" ฉันได้อ่านโพสต์มากมาย แต่ยังไม่ได้รับความคิดที่แน่นอนของสิ่งที่ต้องทำ ... รหัสการคลิกปุ่มบันทึกของฉันได้รับด้านล่าง protected void Button1_Click(object sender, EventArgs e) { EmployeeService es = new EmployeeService(); CityService cs = new CityService(); DateTime dt = new DateTime(2008, 12, 12); Payroll.Entities.Employee e1 = new Payroll.Entities.Employee(); Payroll.Entities.City city1 = cs.SelectCity(Convert.ToInt64(cmbCity.SelectedItem.Value)); e1.Name = "Archana"; e1.Title = "aaaa"; e1.BirthDate …

18
Entity Framework: ตารางที่ไม่มีคีย์หลัก
ฉันมีฐานข้อมูลที่มีอยู่ซึ่งฉันต้องการสร้างแอปใหม่โดยใช้ EF4.0 บางตารางไม่มีคีย์หลักที่กำหนดไว้ดังนั้นเมื่อฉันสร้างรูปแบบข้อมูลเอนทิตีใหม่ฉันได้รับข้อความต่อไปนี้: The table/view TABLE_NAME does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity, you will need to review your schema, add the correct keys, and uncomment it. หากฉันต้องการใช้และแก้ไขข้อมูลฉันต้องเพิ่ม PK ลงในตารางเหล่านั้นหรือต้องมีวิธีแก้ปัญหาเพื่อที่ฉันจะได้ไม่ต้อง?

9
ตั้งค่าการหมดเวลาฐานข้อมูลใน Entity Framework
คำสั่งของฉันหมดเวลาดังนั้นฉันต้องเปลี่ยนค่าการหมดเวลาคำสั่งเริ่มต้น ฉันได้พบแต่ก็myDb.Database.Connection.ConnectionTimeoutreadonly ฉันจะตั้งค่าการหมดเวลาของคำสั่งในEntity Framework 5 ได้อย่างไร

6
ไม่สามารถสร้างค่าคงที่ประเภทสนับสนุนเฉพาะประเภทดั้งเดิมหรือประเภทการแจงนับในบริบทนี้
ฉันได้รับข้อผิดพลาดนี้สำหรับข้อความค้นหาด้านล่าง API.Models.PersonProtocolไม่สามารถสร้างค่าคงที่ของประเภท สนับสนุนชนิดดั้งเดิมหรือชนิดการแจงนับเท่านั้นในบริบทนี้ ppCombinedด้านล่างเป็นIEnumerableวัตถุของPersonProtocolTypeซึ่งถูกสร้างขึ้นโดย concat ของ 2 PersonProtocolรายการ เหตุใดจึงล้มเหลว เราไม่สามารถใช้ LINQ JOINข้อภายในSELECTของJOIN? var persons = db.Favorites .Where(x => x.userId == userId) .Join(db.Person, x => x.personId, y => y.personId, (x, y) => new PersonDTO { personId = y.personId, addressId = y.addressId, favoriteId = x.favoriteId, personProtocol = (ICollection<PersonProtocol>) ppCombined .Where(a => a.personId …

6
ไม่สนับสนุนคำหลัก: "แหล่งข้อมูล" การเริ่มต้นบริบทของ Entity Framework
ฉันกำลังเริ่มต้นบริบทวัตถุ Entity Framework และทำให้ฉันมีคำหลักที่ไม่สนับสนุนข้อผิดพลาด: metadata=res://*/MainDB.csdl|res://*/MainDB.ssdl|res://*/MainDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Workspace\vs\Leftouch\Leftouch.Web\Data\Leftouch.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True;App=EntityFramework" ฉันใช้สตริงการเชื่อมต่อโดยตรงจาก web.config ซึ่งใช้งานได้และแก้ไขเฉพาะเส้นทางไปยังไฟล์ (ซึ่งฉันตั้งค่าแบบไดนามิก) และแทนที่จะใช้ค่าเริ่มต้นให้ใช้สตริงการเชื่อมต่อนี้อย่างชัดเจน สิ่งที่อาจทำให้เกิดข้อผิดพลาดนี้?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.