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

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

4
รหัสเฟรมเวิร์กของเอนทิตี - คีย์นอกที่เป็นโมฆะแรก
ฉันมีUser< Countrymodel. ผู้ใช้เป็นของประเทศ แต่ไม่สามารถอยู่ใน (คีย์นอกที่เป็นค่าว่าง) ฉันจะตั้งค่านี้ได้อย่างไร? เมื่อฉันพยายามแทรกผู้ใช้ด้วยประเทศว่างมันบอกฉันว่ามันไม่สามารถเป็นโมฆะได้ โมเดลมีดังนี้: public class User{ public int CountryId { get; set; } public Country Country { get; set; } } public class Country{ public List<User> Users {get; set;} public int CountryId {get; set;} } ข้อผิดพลาด: A foreign key value cannot be inserted because a …

7
อัปเดตเรกคอร์ดโดยไม่ต้องสอบถามก่อน?
สมมติว่าฉันสืบค้นฐานข้อมูลและโหลดรายการของรายการ จากนั้นฉันเปิดรายการใดรายการหนึ่งในแบบฟอร์มมุมมองรายละเอียดและแทนที่จะสอบถามรายการจากฐานข้อมูลซ้ำฉันสร้างอินสแตนซ์ของรายการจากแหล่งข้อมูลในรายการ มีวิธีใดบ้างที่ฉันสามารถอัปเดตบันทึกฐานข้อมูลโดยไม่ต้องดึงข้อมูลบันทึกของแต่ละรายการ นี่คือตัวอย่างวิธีที่ฉันกำลังทำอยู่: dataItem itemToUpdate = (from t in dataEntity.items where t.id == id select t).FirstOrDefault(); จากนั้นหลังจากดึงบันทึกฉันจะอัปเดตค่าบางอย่างในรายการและผลักดันบันทึกกลับ: itemToUpdate.itemstatus = newStatus; dataEntity.SaveChanges(); ฉันคิดว่าจะมีวิธีที่ดีกว่านี้มีความคิดใดบ้าง

10
Entity Framework - Code First - ไม่สามารถจัดเก็บรายการ <String> ได้
ฉันเขียนคลาสดังกล่าว: class Test { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int Id { get; set; } [Required] public List&lt;String&gt; Strings { get; set; } public Test() { Strings = new List&lt;string&gt; { "test", "test2", "test3", "test4" }; } } และ internal class DataContext : DbContext { public DbSet&lt;Test&gt; Tests { get; set; } …

10
ไม่สนับสนุนสมาชิกประเภทที่ระบุ 'วันที่' ใน LINQ ถึง Entities Exception
ฉันได้รับข้อยกเว้นขณะใช้ข้อความต่อไปนี้ DateTime result; if (!DateTime.TryParse(rule.data, out result)) return jobdescriptions; if (result &lt; new DateTime(1754, 1, 1)) // sql can't handle dates before 1-1-1753 return jobdescriptions; return jobdescriptions.Where(j =&gt; 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 …

5
แทรก / อัปเดตหลาย ๆ เอนทิตีกรอบงาน ฉันต้องทำอย่างไร?
ฉันใช้ EF4 และเป็นมือใหม่ ฉันมีโปรเจ็กต์หลายรายการและหลายรายการและดูเหมือนจะหาวิธีแทรกหรืออัปเดตไม่ได้ ฉันได้สร้างโครงการเล็ก ๆ เพื่อดูว่าควรจะเขียนโค้ดอย่างไร สมมติว่าฉันมี 3 โต๊ะ คลาส: ClassID-ClassName นักเรียน: StudentID-FirstName - นามสกุล StudentClass: StudentID-ClassID หลังจากเพิ่มความสัมพันธ์ทั้งหมดและอัปเดตโมเดลผ่านเบราว์เซอร์โมเดลฉันสังเกตเห็นว่า StudentClass ไม่ปรากฏขึ้นดูเหมือนว่าจะเป็นพฤติกรรมเริ่มต้น ตอนนี้ฉันต้องทำทั้งส่วนแทรกและอัปเดต คุณจะทำอย่างไรมันได้หรือไม่? ตัวอย่างโค้ดหรือลิงค์ใด ๆ ที่ฉันสามารถดาวน์โหลดตัวอย่างได้หรือคุณสามารถเผื่อเวลาไว้ 5 นาทีได้หรือไม่?

11
ฉันจะหยุด Entity Framework ไม่ให้พยายามบันทึก / แทรกวัตถุลูกได้อย่างไร
เมื่อฉันบันทึกเอนทิตีด้วยกรอบงานเอนทิตีฉันคิดว่าโดยปกติแล้วจะพยายามบันทึกเอนทิตีที่ระบุเท่านั้น อย่างไรก็ตามกำลังพยายามบันทึกเอนทิตีลูกของเอนทิตีนั้นด้วย สิ่งนี้ก่อให้เกิดปัญหาความสมบูรณ์ทุกประเภท ฉันจะบังคับให้ EF บันทึกเฉพาะเอนทิตีที่ฉันต้องการบันทึกได้อย่างไรจึงละเว้นออบเจ็กต์ลูกทั้งหมด ถ้าฉันตั้งค่าคุณสมบัติเป็นโมฆะด้วยตนเองฉันได้รับข้อผิดพลาด "การดำเนินการล้มเหลว: ไม่สามารถเปลี่ยนแปลงความสัมพันธ์ได้เนื่องจากคุณสมบัติของคีย์ต่างประเทศอย่างน้อยหนึ่งรายการไม่สามารถเป็นค่าว่างได้" นี่เป็นการตอบโต้อย่างมากเนื่องจากฉันตั้งค่าวัตถุลูกเป็นโมฆะโดยเฉพาะดังนั้น EF จึงปล่อยให้มันอยู่คนเดียว เหตุใดฉันจึงไม่ต้องการบันทึก / แทรกวัตถุลูก เนื่องจากมีการพูดคุยกันไปมาในความคิดเห็นฉันจะให้เหตุผลว่าทำไมฉันถึงต้องการให้สิ่งของลูกของฉันถูกทิ้งไว้ตามลำพัง ในแอปพลิเคชันที่ฉันกำลังสร้างโมเดลอ็อบเจ็กต์ EF ไม่ได้ถูกโหลดจากฐานข้อมูล แต่ใช้เป็นอ็อบเจ็กต์ข้อมูลที่ฉันกำลังเติมข้อมูลขณะแยกวิเคราะห์ไฟล์แบบแบน ในกรณีของอ็อบเจ็กต์ลูกสิ่งเหล่านี้อ้างถึงตารางการค้นหาที่กำหนดคุณสมบัติต่างๆของตารางพาเรนต์ ตัวอย่างเช่นที่ตั้งทางภูมิศาสตร์ของเอนทิตีหลัก เนื่องจากฉันได้สร้างวัตถุเหล่านี้ด้วยตัวเอง EF จึงถือว่าสิ่งเหล่านี้เป็นวัตถุใหม่และจำเป็นต้องแทรกพร้อมกับวัตถุหลัก อย่างไรก็ตามคำจำกัดความเหล่านี้มีอยู่แล้วและฉันไม่ต้องการสร้างรายการที่ซ้ำกันในฐานข้อมูล ฉันใช้ออบเจ็กต์ EF เพื่อทำการค้นหาและใส่คีย์นอกในเอนทิตีตารางหลักของฉันเท่านั้น แม้ว่าวัตถุลูกจะเป็นข้อมูลจริง แต่ฉันก็ต้องบันทึกพาเรนต์ก่อนและรับคีย์หลักหรือ EF ก็ดูเหมือนจะยุ่งเหยิง หวังว่านี่จะให้คำอธิบายบางอย่าง

9
Linq: การเพิ่มเงื่อนไขไปยัง where clause conditionally
ฉันมีคำถามเช่นนี้ (from u in DataContext.Users where u.Division == strUserDiv &amp;&amp; u.Age &gt; 18 &amp;&amp; u.Height &gt; strHeightinFeet select new DTO_UserMaster { Prop1 = u.Name, }).ToList(); ฉันต้องการเพิ่มเงื่อนไขต่างๆเช่นอายุความสูงโดยพิจารณาว่าเงื่อนไขเหล่านั้นถูกระบุไว้ในวิธีการที่เรียกใช้แบบสอบถามนี้หรือไม่ เงื่อนไขทั้งหมดจะรวมถึงแผนกผู้ใช้ หากระบุอายุฉันต้องการเพิ่มสิ่งนั้นในแบบสอบถาม ในทำนองเดียวกันถ้าระบุความสูงฉันก็ต้องการเพิ่มเช่นกัน หากต้องทำโดยใช้แบบสอบถาม sql ฉันจะใช้ตัวสร้างสตริงเพื่อต่อท้ายคิวรี strSQL หลัก แต่ที่นี่ใน Linq ฉันคิดได้แค่ใช้เงื่อนไข IF ที่ฉันจะเขียนแบบสอบถามเดียวกันสามครั้งโดยแต่ละบล็อก IF มีเงื่อนไขเพิ่มเติม มีวิธีที่ดีกว่านี้หรือไม่?

4
รหัสแรก: การเชื่อมโยงอิสระกับสมาคมคีย์ต่างประเทศ?
ฉันถกเถียงกับตัวเองทุกครั้งที่เริ่มทำงานในโครงการใหม่และฉันกำลังออกแบบ POCO ของฉัน ฉันได้เห็นบทเรียน / ตัวอย่างโค้ดมากมายที่ดูเหมือนจะสนับสนุนการเชื่อมโยงคีย์ต่างประเทศ : สมาคมคีย์ต่างประเทศ public class Order { public int ID { get; set; } public int CustomerID { get; set; } // &lt;-- Customer ID ... } ตรงข้ามกับการเชื่อมโยงอิสระ : สมาคมอิสระ public class Order { public int ID { get; set; } public Customer Customer { …

8
รองรับเฉพาะ initializers สมาชิกเอนทิตีและคุณสมบัติการนำทางของเอนทิตีเท่านั้น
ฉันได้รับข้อยกเว้นนี้: ไม่สนับสนุนสมาชิกประเภท 'ชำระเงิน' ที่ระบุใน LINQ ถึงเอนทิตี รองรับเฉพาะ initializers สมาชิกเอนทิตีและคุณสมบัติการนำทางของเอนทิตีเท่านั้น public ActionResult Index() { var debts = storeDB.Orders .Where(o =&gt; o.Paid == false) .OrderByDescending(o =&gt; o.DateCreated); return View(debts); } คลาส My Model public partial class Order { public bool Paid { get { return TotalPaid &gt;= Total; } } public decimal …

9
เอนทิตีกรอบการรีเฟรชบริบท?
ฉันจะรีเฟรชบริบทได้อย่างไร ฉันมีเอนทิตีตามมุมมองจากฐานข้อมูลของฉันและเมื่อฉันทำการอัปเดตบนตารางหนึ่งเอนทิตีที่มีคุณสมบัติการนำทางไปยังมุมมองเอนทิตีกำลังอัปเดต แต่มุมมองไม่รีเฟรชสอดคล้องกับการอัปเดตใหม่ ... เพียงแค่ต้องการรับอีกครั้งจาก ฐานข้อมูล ขอบคุณ!

14
Entity Framework DateTime และ UTC
เป็นไปได้ไหมที่จะมี Entity Framework (ฉันใช้ Code First Approach กับ CTP5 ในปัจจุบัน) เก็บค่า DateTime ทั้งหมดเป็น UTC ในฐานข้อมูล หรืออาจมีวิธีระบุในการแม็ปเช่นในคอลัมน์นี้สำหรับคอลัมน์ last_login: modelBuilder.Entity&lt;User&gt;().Property(x =&gt; x.Id).HasColumnName("id"); modelBuilder.Entity&lt;User&gt;().Property(x =&gt; x.IsAdmin).HasColumnName("admin"); modelBuilder.Entity&lt;User&gt;().Property(x =&gt; x.IsEnabled).HasColumnName("enabled"); modelBuilder.Entity&lt;User&gt;().Property(x =&gt; x.PasswordHash).HasColumnName("password_hash"); modelBuilder.Entity&lt;User&gt;().Property(x =&gt; x.LastLogin).HasColumnName("last_login");

3
เอนทิตีเฟรมเวิร์ก Queryable async
ฉันกำลังทำงานกับบางสิ่งบางอย่างของ Web API โดยใช้ Entity Framework 6 และหนึ่งในวิธีการควบคุมของฉันคือ "รับทั้งหมด" ที่คาดว่าจะได้รับเนื้อหาของตารางจากฐานข้อมูลของฉันเป็นIQueryable&lt;Entity&gt;. ในที่เก็บของฉันฉันสงสัยว่ามีเหตุผลที่เป็นประโยชน์หรือไม่ที่จะทำสิ่งนี้แบบอะซิงโครนัสเนื่องจากฉันเพิ่งเริ่มใช้ EF กับ async โดยทั่วไปจะเดือดถึง public async Task&lt;IQueryable&lt;URL&gt;&gt; GetAllUrlsAsync() { var urls = await context.Urls.ToListAsync(); return urls.AsQueryable(); } เทียบกับ public IQueryable&lt;URL&gt; GetAllUrls() { return context.Urls.AsQueryable(); } เวอร์ชัน async จะให้ผลประโยชน์ด้านประสิทธิภาพที่นี่จริงหรือฉันมีค่าใช้จ่ายที่ไม่จำเป็นโดยการฉายไปที่รายการก่อน (โดยใช้ async ในใจคุณ) และจากนั้นจะเป็น IQueryable?

12
ไม่พบ 'Microsoft.SqlServer.Types' เวอร์ชัน 10 หรือสูงกว่าบน Azure
ฉันกำลังพยายามสร้าง webapi ใน ASP.NET MVC 4 webapi ใช้ Entity Framework 5 Spatial types และฉันได้เขียนโค้ดง่ายๆ public List&lt;Area&gt; GetAllAreas() { List&lt;Area&gt; aList = db.Areas.ToList(); return aList; } พื้นที่มี DbGeometry เมื่อฉันเรียกใช้ท้องถิ่นนี้มันใช้งานได้ แต่เมื่อฉันเผยแพร่เป็นสีฟ้ามันทำให้ฉันเกิดข้อผิดพลาดนี้: ประเภทและฟังก์ชันเชิงพื้นที่ไม่พร้อมใช้งานสำหรับผู้ให้บริการรายนี้เนื่องจากไม่พบแอสเซมบลี 'Microsoft.SqlServer.Types' เวอร์ชัน 10 ขึ้นไป ใครทราบวิธีแก้ปัญหานี้ :) ขอบคุณ!

3
Linq Syntax - การเลือกหลายคอลัมน์
นี่คือ Linq Syntax ของฉันที่ฉันใช้กับโมเดลเอนทิตีของฉัน IQueryable&lt;string&gt; objEmployee = null; objEmployee = from res in _db.EMPLOYEEs where (res.EMAIL == givenInfo || res.USER_NAME == givenInfo) select res.EMAIL; ฉันจะเลือกหลายคอลัมน์ได้อย่างไร เช่นฉันต้องการเลือก res.ID เช่นกัน และฉันจะรับสิ่งเหล่านั้นได้อย่างไร? ฉันคิดว่า IQueryable จะไม่ได้ผล และนี่เรียกว่า Linq เป็น SQL - ใช่ไหม?

22
Entity Framework Core: การดำเนินการที่สองเริ่มต้นในบริบทนี้ก่อนที่การดำเนินการก่อนหน้านี้จะเสร็จสมบูรณ์
ฉันกำลังทำงานในโครงการ ASP.Net Core 2.0 โดยใช้ Entity Framework Core &lt;PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.0.1" /&gt; &lt;PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" PrivateAssets="All" /&gt; &lt;PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0"/&gt; และในวิธีการรายการของฉันฉันได้รับข้อผิดพลาดนี้: InvalidOperationException: A second operation started on this context before a previous operation completed. Any instance members are not guaranteed to be thread safe. Microsoft.EntityFrameworkCore.Internal.ConcurrencyDetector.EnterCriticalSection() นี่คือวิธีการของฉัน: [HttpGet("{currentPage}/{pageSize}/")] [HttpGet("{currentPage}/{pageSize}/{search}")] public ListResponseVM&lt;ClientVM&gt; …

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