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

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

14
ไม่สามารถสร้างเอนทิตีได้ในการสืบค้น LINQ to Entities
มีชนิดเอนทิตีที่เรียกว่าผลิตภัณฑ์ที่สร้างขึ้นโดยกรอบงานเอนทิตี ฉันเขียนแบบสอบถามนี้ public IQueryable<Product> GetProducts(int categoryID) { return from p in db.Products where p.CategoryID== categoryID select new Product { Name = p.Name}; } รหัสด้านล่างพ่นข้อผิดพลาดต่อไปนี้: "เอนทิตีหรือร้านค้าประเภทที่ซับซ้อนไม่สามารถสร้างสินค้าในแบบสอบถาม LINQ ไปยังเอนทิตี" var products = productRepository.GetProducts(1).Tolist(); แต่เมื่อฉันใช้select pแทนselect new Product { Name = p.Name};มันทำงานได้อย่างถูกต้อง ฉันจะ preform ส่วนเลือกที่กำหนดเองได้อย่างไร

25
การแปลงชนิดข้อมูล datetime2 เป็นชนิดข้อมูล datetime ทำให้ค่าอยู่นอกช่วง
ฉันมี DataTable กับ 5 คอลัมน์ที่แถวจะถูกกรอกข้อมูลแล้วบันทึกลงในฐานข้อมูลผ่านการทำธุรกรรม ขณะบันทึกข้อผิดพลาดจะถูกส่งกลับ: การแปลงชนิดข้อมูล datetime2 เป็นชนิดข้อมูล datetime ทำให้ค่าอยู่นอกช่วง มันบอกเป็นนัย ๆ ว่าการอ่านข้อมูลของฉันมีประเภทDateTime2และฐานข้อมูลของฉัน a DateTime; ว่าเป็นสิ่งที่ผิด. คอลัมน์วันที่ถูกตั้งค่าเป็นDateTimeเช่นนี้: new DataColumn("myDate", Type.GetType("System.DateTime")) คำถาม สิ่งนี้สามารถแก้ไขได้ในรหัสหรือสิ่งที่จะต้องมีการเปลี่ยนแปลงในระดับฐานข้อมูล?

7
Entity Framework - รวมคุณสมบัติหลายระดับ
กระบวนการรวม () วิธีการทำงานค่อนข้างดีสำหรับรายการบนวัตถุ แต่ถ้าฉันต้องไปสองระดับลึก ตัวอย่างเช่นวิธีการด้านล่างจะส่งคืน ApplicationServers พร้อมคุณสมบัติที่รวมไว้ที่นี่ อย่างไรก็ตาม ApplicationsWithOverrideGroup เป็นคอนเทนเนอร์อื่นที่เก็บวัตถุที่ซับซ้อนอื่น ๆ ฉันสามารถรวม () กับทรัพย์สินนั้นได้หรือไม่ หรือฉันจะทำให้คุณสมบัตินั้นโหลดเต็มได้อย่างไร ตามที่เป็นอยู่ตอนนี้วิธีการนี้: public IEnumerable<ApplicationServer> GetAll() { return this.Database.ApplicationServers .Include(x => x.ApplicationsWithOverrideGroup) .Include(x => x.ApplicationWithGroupToForceInstallList) .Include(x => x.CustomVariableGroups) .ToList(); } จะเติมข้อมูลเฉพาะคุณสมบัติที่เปิดใช้งาน (ด้านล่าง) และไม่ใช่คุณสมบัติของแอปพลิเคชันหรือ CustomVariableGroup (ด้านล่าง) ฉันจะทำให้สิ่งนี้เกิดขึ้นได้อย่างไร public class ApplicationWithOverrideVariableGroup : EntityBase { public bool Enabled { get; …

9
เหตุใดจึงใช้ ICollection และไม่ใช่ IEnumerable หรือ List <T> ในหลาย ๆ ความสัมพันธ์ / หลายต่อหลายความสัมพันธ์
ICollection&lt;T&gt;ฉันเห็นมากในบทเรียนที่มีคุณสมบัติเป็นลูกศร นี่เป็นข้อกำหนดที่จำเป็นสำหรับ Entity Framework หรือไม่ ฉันสามารถใช้IEnumerable? อะไรคือวัตถุประสงค์หลักในการใช้งานICollectionแทนIEnumerableหรือแม้กระทั่งList&lt;T&gt;?

30
ข้อความแสดงข้อผิดพลาด 'ไม่สามารถโหลดประเภทที่ขอหนึ่งประเภทขึ้นไป รับคุณสมบัติ LoaderExceptions สำหรับข้อมูลเพิ่มเติม '
ฉันได้พัฒนาแอพพลิเคชั่นโดยใช้Entity Framework , SQL Server 2000, Visual Studio 2008 และ Enterprise Library มันทำงานได้ดีในพื้นที่ แต่เมื่อฉันปรับใช้โครงการกับสภาพแวดล้อมการทดสอบของเราฉันได้รับข้อผิดพลาดต่อไปนี้: ไม่สามารถโหลดประเภทที่ขอหนึ่งประเภทขึ้นไป ดึงข้อมูลคุณสมบัติ LoaderExceptions สำหรับข้อมูลเพิ่มเติม การติดตามสแต็ก: ที่ System.Reflection.Module._GetTypesInternal (StackCrawlMark &amp; ​​stackMark) ที่ System.Reflection.Assembly.GetTypes () ที่ System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadTypesFromAssembly (บริบทการโหลดบริบท) ที่ System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.InternalLoadAssemblyFromCache (บริบทการโหลดบริบท) ที่ System.Data.Metadata.Edm.ObjectItemCollection.AssemblyCacheEntry.LoadAssemblyFromCache (ชุดประกอบ, บูลีน loadReferencedAssemblies, พจนานุกรม2 knownAssemblies, Dictionary2 &amp; typesInLoading, List`1 &amp; ข้อผิดพลาด) ที่ System.Data.Metadata.Edm.ObjectItemCollection.LoadAssemblyFromCache (ObjectItemCollection objectItemCollection …

3
ใช้การทำธุรกรรมหรือ SaveChanges (false) และ AcceptAllChanges ()?
ฉันตรวจสอบธุรกรรมและดูเหมือนว่าพวกเขาดูแลตัวเองใน EF ตราบใดที่ฉันผ่านfalseไปSaveChanges()แล้วโทรติดต่อAcceptAllChanges()หากไม่มีข้อผิดพลาด: SaveChanges(false); // ... AcceptAllChanges(); เกิดอะไรขึ้นถ้ามีบางอย่างไม่ดี? ฉันไม่ต้องย้อนกลับหรือทันทีที่วิธีการของฉันไม่อยู่ในขอบเขตการทำธุรกรรมสิ้นสุดลงหรือไม่ เกิดอะไรขึ้นกับคอลัมน์ indentiy ใด ๆ ที่ได้รับมอบหมายผ่านทางธุรกรรมครึ่งทาง ฉันคิดว่าถ้ามีคนเพิ่มบันทึกหลังจากฉันก่อนที่ฉันจะเสียก็หมายความว่าจะมีค่าประจำตัวที่ขาดหายไป มีเหตุผลใดที่จะใช้TransactionScopeคลาสมาตรฐานในรหัสของฉัน?

17
การตรวจสอบล้มเหลวสำหรับเอนทิตี้อย่างน้อยหนึ่งรายการในขณะที่บันทึกการเปลี่ยนแปลงของฐานข้อมูลเซิร์ฟเวอร์ SQL โดยใช้ Entity Framework
ฉันต้องการบันทึก Edit to Database และฉันใช้ Entity FrameWork Code-First ใน ASP.NET MVC 3 / C # แต่ฉันได้รับข้อผิดพลาด ในคลาสกิจกรรมของฉันฉันมี DateTime และ TimeSpan datatypes แต่ในฐานข้อมูลของฉันฉันมี Date and time ตามลำดับ นี่อาจเป็นเหตุผลหรือไม่ ฉันจะส่งไปยังประเภทข้อมูลที่เหมาะสมในรหัสก่อนบันทึกการเปลี่ยนแปลงในฐานข้อมูลได้อย่างไร public class Event { public int EventId { get; set; } public int CategoryId { get; set; } public int PlaceId { …

7
อะไรคือแนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ GUID เป็นคีย์หลักโดยเฉพาะเกี่ยวกับประสิทธิภาพ
ฉันมีแอปพลิเคชันที่ใช้ GUID เป็นคีย์หลักในเกือบทุกตารางและฉันได้อ่านว่ามีปัญหาเกี่ยวกับประสิทธิภาพเมื่อใช้ GUID เป็นคีย์หลัก จริงๆแล้วฉันไม่ได้เห็นปัญหาใด ๆ แต่ฉันกำลังจะเริ่มแอปพลิเคชันใหม่และฉันยังต้องการใช้ GUID เป็นคีย์หลัก แต่ฉันคิดว่าจะใช้ Composite Primary Key (The GUID และอาจเป็นอีกเขตข้อมูลหนึ่ง .) ฉันใช้ GUID เพราะดีและง่ายต่อการจัดการเมื่อคุณมีสภาพแวดล้อมที่แตกต่างกันเช่นฐานข้อมูล "การผลิต" "การทดสอบ" และ "dev" และสำหรับการย้ายข้อมูลระหว่างฐานข้อมูล ฉันจะใช้ Entity Framework 4.3 และฉันต้องการกำหนด Guid ในรหัสแอปพลิเคชันก่อนที่จะแทรกลงในฐานข้อมูล (เช่นฉันไม่ต้องการให้ SQL สร้าง Guid) แนวปฏิบัติที่ดีที่สุดสำหรับการสร้างคีย์หลักที่ใช้ GUID คืออะไรเพื่อหลีกเลี่ยงการพบว่ามีประสิทธิภาพที่เกี่ยวข้องกับวิธีการนี้

30
Entity Framework:“ Store update, insert หรือ delete statement ส่งผลต่อจำนวนแถวที่ไม่คาดคิด (0)” [ปิด]
ปิด. คำถามนี้ต้องการรายละเอียดการแก้จุดบกพร่อง ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับ Stack Overflow ปิดให้บริการใน2 ปีที่ผ่านมา ปรับปรุงคำถามนี้ ฉันใช้ Entity Framework เพื่อเติมการควบคุมกริด บางครั้งเมื่อฉันอัปเดตฉันได้รับข้อผิดพลาดต่อไปนี้: ปรับปรุงร้านแทรกหรือลบคำสั่งส่งผลกระทบต่อจำนวนแถวที่ไม่คาดคิด (0) อาจมีการแก้ไขหรือลบรายการเนื่องจากมีการโหลดรายการ รีเฟรชรายการ ObjectStateManager ฉันไม่สามารถหาวิธีทำให้เกิดสิ่งนี้ได้ แต่มันอาจมีบางอย่างที่เกี่ยวข้องกับการที่ฉันเข้าใกล้อัพเดต มีใครเห็นสิ่งนี้หรือไม่มีใครรู้ว่าข้อความแสดงข้อผิดพลาดหมายถึงอะไร แก้ไข: น่าเสียดายที่ฉันไม่มีอิสระที่จะทำซ้ำปัญหาที่ฉันมีอยู่ที่นี่เพราะฉันก้าวออกจากโครงการนี้และจำไม่ได้ว่าในที่สุดฉันก็พบทางออกถ้านักพัฒนารายอื่นแก้ไขหรือถ้าฉันแก้ไขมัน ดังนั้นฉันไม่สามารถยอมรับคำตอบใด ๆ

7
Entity Framework Timeouts
ฉันได้รับไทม์เอาต์โดยใช้ Entity Framework (EF) เมื่อใช้การนำเข้าฟังก์ชั่นที่ใช้เวลาดำเนินการมากกว่า 30 วินาที ฉันลองสิ่งต่อไปนี้และไม่สามารถแก้ไขปัญหานี้ได้: ฉันเพิ่มDefault Command Timeout=300000สตริงการเชื่อมต่อในApp.Configไฟล์ในโครงการที่มีไฟล์ EDMX เป็นข้อเสนอแนะที่นี่ นี่คือลักษณะของสตริงการเชื่อมต่อของฉัน: &lt;add name="MyEntityConnectionString" connectionString="metadata=res://*/MyEntities.csdl|res://*/MyEntities.ssdl| res://*/MyEntities.msl; provider=System.Data.SqlClient;provider connection string=&amp;quot; Data Source=trekdevbox;Initial Catalog=StarTrekDatabase; Persist Security Info=True;User ID=JamesTKirk;Password=IsFriendsWithSpock; MultipleActiveResultSets=True;Default Command Timeout=300000;&amp;quot;" providerName="System.Data.EntityClient" /&gt; ฉันพยายามตั้งค่า CommandTimeout ในที่เก็บของฉันโดยตรงเช่น: private TrekEntities context = new TrekEntities(); public IEnumerable&lt;TrekMatches&gt; GetKirksFriends() { this.context.CommandTimeout = 180; return …

21
ฉันจะลบหลายแถวใน Entity Framework ได้อย่างไร (โดยไม่ foreach)
ฉันกำลังลบหลายรายการจากตารางโดยใช้ Entity Framework ไม่มีคีย์ต่างประเทศ / วัตถุแม่ดังนั้นฉันไม่สามารถจัดการกับ OnDeleteCascade ตอนนี้ฉันกำลังทำสิ่งนี้: var widgets = context.Widgets .Where(w =&gt; w.WidgetId == widgetId); foreach (Widget widget in widgets) { context.Widgets.DeleteObject(widget); } context.SaveChanges(); มันใช้งานได้ แต่ foreach ทำให้ฉันรำคาญ ฉันใช้ EF4 แต่ฉันไม่ต้องการรัน SQL ฉันแค่ต้องการให้แน่ใจว่าฉันจะไม่พลาดอะไรเลย - มันดีเท่าที่จะได้รับใช่ไหม? ฉันสามารถสรุปมันด้วยวิธีการต่อเติมหรือผู้ช่วย แต่ที่ไหนสักแห่งที่เราจะยังคงทำ foreach ใช่มั้ย

12
วิธีการเปรียบเทียบเฉพาะวันที่ไม่มีเวลาในประเภท DateTime ใน Linq กับ SQL ด้วย Entity Framework
มีวิธีเปรียบเทียบDateTimeตัวแปรสองตัวLinq2Sqlแต่ไม่สนใจส่วนของเวลาหรือไม่ แอพจัดเก็บรายการต่าง ๆ ในฐานข้อมูลและเพิ่มวันที่เผยแพร่ ฉันต้องการรักษาเวลาที่แน่นอน แต่ก็ยังสามารถดึงตามวันที่ได้ ฉันต้องการเปรียบเทียบ12/3/89 12:43:34และ12/3/89 11:22:12ไม่สนใจเวลาจริงของวันดังนั้นทั้งสองอย่างนี้จึงถือว่าเหมือนกัน ฉันเดาว่าฉันสามารถตั้งค่าเวลาทั้งหมดของวันเป็น00:00:00ก่อนที่ฉันจะเปรียบเทียบ แต่จริง ๆ แล้วฉันต้องการทราบเวลาของวันที่ฉันแค่ต้องการเปรียบเทียบตามวันที่เท่านั้น ฉันพบรหัสบางอย่างที่มีปัญหาเดียวกันและพวกเขาเปรียบเทียบปีเดือนและวันแยกจากกัน มีวิธีที่ดีกว่าในการทำเช่นนี้?

2
ละเว้นคลาสของคุณสมบัติใน Entity Framework 4.1 Code First
ความเข้าใจของฉันคือว่า[NotMapped]แอ็ตทริบิวต์ไม่สามารถใช้ได้จนกว่าจะถึง EF 5 ซึ่งปัจจุบันเป็น CTP ดังนั้นเราจึงไม่สามารถใช้มันในการผลิตได้ ฉันจะทำเครื่องหมายคุณสมบัติใน EF 4.1 ที่จะเพิกเฉยได้อย่างไร UPDATE:ฉันสังเกตเห็นสิ่งแปลก ๆ ผมได้[NotMapped]แอตทริบิวต์การทำงาน แต่ด้วยเหตุผลบางอย่าง EF 4.1 ยังคงสร้างคอลัมน์ชื่อทิ้งในฐานข้อมูลแม้ว่าจะมีเครื่องหมายpublic bool Disposed { get; private set; } [NotMapped]ชั้นเรียนดำเนินการอย่างIDisposeableแน่นอน แต่ฉันไม่เห็นว่ามันจะมีความสำคัญอย่างไร ความคิดใด ๆ

14
รีเซ็ตการโยกย้าย Entity-Framework
ฉันลบล้างการย้ายข้อมูลของฉันฉันใช้IgnoreChangesในการย้ายข้อมูลเริ่มต้น แต่ตอนนี้ฉันต้องการลบการย้ายข้อมูลทั้งหมดของฉันและเริ่มต้นด้วยการโยกย้ายครั้งแรกด้วยตรรกะทั้งหมด เมื่อฉันลบการโยกย้ายในโฟลเดอร์และลองและAdd-Migrationมันไม่ได้สร้างไฟล์เต็ม (มันว่างเปล่า - เพราะฉันยังไม่ได้ทำการเปลี่ยนแปลงใด ๆ ตั้งแต่ครั้งล่าสุดของฉัน แต่ตอนนี้ถูกย้ายการย้าย) มีคำสั่งDisable-MigrationsEnable-Migrationsหรือไม่ดังนั้นฉันจึงสามารถรันใหม่ได้?

6
สร้างรหัสก่อนมากถึงมากด้วยฟิลด์เพิ่มเติมในตารางการเชื่อมโยง
ฉันมีสถานการณ์นี้: public class Member { public int MemberID { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public virtual ICollection&lt;Comment&gt; Comments { get; set; } } public class Comment { public int CommentID { get; set; } public string Message { …

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