คำถามติดแท็ก ef-code-first

EF Code-First เป็นวิธีการใช้ Entity Framework ของ Microsoft กับคลาส POCO ซึ่งต่างจาก model-first หรือ DB-first

14
วิธีแก้ไขข้อผิดพลาดการแปลง datetime2 นอกช่วงโดยใช้ DbContext และ SetInitializer
ฉันใช้ DbContext และ Code First API ที่แนะนำกับ Entity Framework 4.1 ข้อมูลแบบใช้ชนิดข้อมูลพื้นฐานเช่นและstring DateTimeคำอธิบายประกอบข้อมูลเดียวที่ฉันใช้ในบางกรณีคือ[Required]แต่ไม่ได้อยู่ในDateTimeคุณสมบัติใด ๆ ตัวอย่าง: public virtual DateTime Start { get; set; } subclass DbContextยังเป็นที่เรียบง่ายและดูเหมือนว่า: public class EventsContext : DbContext { public DbSet<Event> Events { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity<Event>().ToTable("Events"); } } ตัวเริ่มต้นกำหนดวันที่ในแบบจำลองเป็นค่าที่เหมาะสมในปีนี้หรือปีหน้า อย่างไรก็ตามเมื่อฉันเรียกใช้ initializer ฉันได้รับข้อผิดพลาดนี้ที่context.SaveChanges(): …

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

25
มีชื่อวัตถุอยู่ในฐานข้อมูลแล้ว
Update-Database ล้มเหลวจาก Package Manager Console ฉันใช้ Entity Framework 6.x และวิธีการรหัสแรก ข้อผิดพลาดคือ "มีออบเจ็กต์ชื่อ" AboutUs "อยู่ในฐานข้อมูลแล้ว" ฉันจะแก้ปัญหานี้ได้อย่างไร? internal sealed class Configuration : DbMigrationsConfiguration&lt;Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext&gt; { public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = false; } protected override void Seed(Jahan.Blog.Web.Mvc.Models.JahanBlogDbContext context) { } } DbContext ของฉันคือ: public class JahanBlogDbContext : IdentityDbContext&lt;User, Role, int, UserLogin, …

26
คำว่า 'Update-Database' ไม่รู้จักเป็นชื่อของ cmdlet
ฉันใช้ EF5 beta1 และในขณะที่ฉันสามารถเรียกใช้ "Update-Database" มาก่อน ตอนนี้ฉันปิด Visual Studio แล้วฉันไม่สามารถเรียกใช้งานได้ ฉันได้รับข้อผิดพลาดต่อไปนี้: คำว่า 'Update-Database' ไม่รู้จักเป็นชื่อของ cmdlet ฟังก์ชันไฟล์สคริปต์หรือโปรแกรมที่ใช้งานได้ ตรวจสอบการสะกดชื่อหรือถ้ามีพา ธ ตรวจสอบว่าพา ธ ถูกต้องแล้วลองอีกครั้ง ที่บรรทัด: 1 char: 16 + Update-Database &lt;&lt;&lt;&lt; -verbose + CategoryInfo: ObjectNotFound: (Update-Database: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException ฉันได้ลองติดตั้ง EF5b1 อีกครั้งและในขณะที่ทำสำเร็จ (ติดตั้งแล้ว) 'Update-Database' ก็ยังไม่ทำงาน ใครช่วยได้บ้าง ???


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

6
EntityType 'IdentityUserLogin' ไม่มีการกำหนดคีย์ กำหนดคีย์สำหรับ EntityType นี้
ฉันกำลังทำงานกับ Entity Framework Code First และ MVC 5 เมื่อฉันสร้างแอปพลิเคชันของฉันด้วยการตรวจสอบบัญชีผู้ใช้ส่วนบุคคลฉันได้รับตัวควบคุมบัญชีและคลาสและรหัสที่จำเป็นทั้งหมดที่จำเป็นในการรับการตรวจสอบสิทธิ์บัญชีผู้ใช้ Indiv เพื่อให้ทำงานได้ . ในบรรดารหัสที่มีอยู่แล้วคือ: public class ApplicationDbContext : IdentityDbContext&lt;ApplicationUser&gt; { public ApplicationDbContext() : base("DXContext", throwIfV1Schema: false) { } public static ApplicationDbContext Create() { return new ApplicationDbContext(); } } แต่จากนั้นฉันก็สร้างบริบทของตัวเองโดยใช้โค้ดก่อนดังนั้นตอนนี้ฉันก็มีสิ่งต่อไปนี้ด้วย: public class DXContext : DbContext { public DXContext() : base("DXContext") { } …

2
คีย์คอมโพสิตพร้อมรหัส EF 4.1 ก่อน
ฉันกำลังพยายามหาวิธีการมีคีย์ผสมโดยใช้รหัส EF First 4.1 RC ขณะนี้ฉันใช้คำอธิบายประกอบข้อมูล [คีย์] แต่ฉันไม่สามารถระบุได้มากกว่าหนึ่งคีย์ จะระบุคีย์ผสมได้อย่างไร นี่คือตัวอย่างของฉัน: public class ActivityType { [Key] public int ActivityID { get; set; } [Required(ErrorMessage = "A ActivityName is required")] [StringLength(50, ErrorMessage = "Activity Name must not exceed 50 characters")] public string ActivityName { get; set; } } ฉันต้องการ "ชื่อกิจกรรม" เพื่อเป็นกุญแจด้วย แน่นอนว่าฉันสามารถเขียนโค้ดได้ …

2
ฉันจะประกาศความสัมพันธ์คีย์ต่างประเทศโดยใช้ Code First Entity Framework (4.1) ใน MVC3 ได้อย่างไร
ฉันค้นหาแหล่งข้อมูลเกี่ยวกับวิธีการประกาศความสัมพันธ์ของคีย์ต่างประเทศและข้อ จำกัด อื่น ๆ โดยใช้รหัส EF 4.1 แรกโดยไม่ต้องมีโชคมากนัก โดยทั่วไปฉันกำลังสร้างโมเดลข้อมูลในโค้ดและใช้ MVC3 เพื่อค้นหาโมเดลนั้น ทุกอย่างทำงานผ่าน MVC ซึ่งยอดเยี่ยมมาก (ขอชื่นชม Microsoft!) แต่ตอนนี้ฉันไม่ต้องการให้มันทำงานเพราะฉันต้องมีข้อ จำกัด ของโมเดลข้อมูล ตัวอย่างเช่นฉันมีวัตถุ Order ที่มีคุณสมบัติมากมายที่เป็นวัตถุภายนอก (ตาราง) ตอนนี้ฉันสามารถสร้างคำสั่งซื้อได้โดยไม่มีปัญหา แต่ไม่สามารถเพิ่ม Foreign Key หรือวัตถุภายนอกได้ MVC3 ตั้งค่านี้ไม่มีปัญหา ฉันรู้ว่าฉันสามารถเพิ่มวัตถุด้วยตัวเองในคลาสคอนโทรลเลอร์ก่อนที่จะบันทึก แต่ฉันต้องการให้การเรียกไปยัง DbContext.SaveChanges () ล้มเหลวหากไม่ตรงตามความสัมพันธ์ของข้อ จำกัด ข้อมูลใหม่ ดังนั้นโดยเฉพาะฉันต้องการให้มีข้อยกเว้นเกิดขึ้นเมื่อฉันพยายามบันทึกวัตถุคำสั่งซื้อโดยไม่ระบุวัตถุของลูกค้า สิ่งนี้ดูเหมือนจะไม่ใช่พฤติกรรมถ้าฉันเพียงแค่จัดองค์ประกอบวัตถุตามที่อธิบายไว้ในเอกสาร Code First EF ส่วนใหญ่ รหัสล่าสุด: public class Order { public int …

1
บริบท DB หลายรายการในฐานข้อมูลและแอปพลิเคชันเดียวกันใน EF 6 และ Code First Migrations
ฉันเพิ่งเริ่มใช้ Entity Framework ฉันกำลังพยายามตั้งค่าแอปพลิเคชัน MVC ที่ใช้ EF 6 ฉันใช้ Code First Migrations ฉันใช้ Areas ในแอปและต้องการให้ DbContexts แตกต่างกันในแต่ละพื้นที่เพื่อแยกมันออก ฉันรู้ว่า EF 6 มี ContextKey แต่ฉันไม่พบข้อมูลทั้งหมดเกี่ยวกับวิธีใช้ ขณะนี้ฉันสามารถใช้การย้ายข้อมูลได้ทีละบริบทเท่านั้น ใครช่วยยกตัวอย่างที่มีรายละเอียดเพียงพอให้คนใหม่ EF อย่างฉันเข้าใจและนำไปใช้ได้

6
แบบสอบถาม Entity Framework ช้า แต่ SQL เดียวกันใน SqlQuery นั้นเร็ว
ฉันเห็นความสมบูรณ์แบบแปลก ๆ ที่เกี่ยวข้องกับแบบสอบถามที่เรียบง่ายมากโดยใช้ Entity Framework Code-First กับ. NET framework เวอร์ชัน 4 แบบสอบถาม LINQ2Entities มีลักษณะดังนี้: context.MyTables.Where(m =&gt; m.SomeStringProp == stringVar); ซึ่งใช้เวลามากกว่า 3,000 มิลลิวินาทีในการดำเนินการ SQL ที่สร้างขึ้นนั้นดูเรียบง่ายมาก: SELECT [Extent1].[ID], [Extent1].[SomeStringProp], [Extent1].[SomeOtherProp], ... FROM [MyTable] as [Extent1] WHERE [Extent1].[SomeStringProp] = '1234567890' แบบสอบถามนี้ทำงานเกือบจะทันทีเมื่อเรียกใช้ผ่าน Management Studio เมื่อฉันเปลี่ยนรหัส C # เพื่อใช้ฟังก์ชัน SqlQuery มันจะทำงานใน 5-10 มิลลิวินาที: context.MyTables.SqlQuery("SELECT [Extent1].[ID] …

2
คีย์คอมโพสิตเป็นคีย์ต่างประเทศ
ฉันใช้ Entity framework 4.1 ในแอปพลิเคชัน MVC 3 ฉันมีเอนทิตีที่ฉันมีคีย์หลักประกอบด้วยสองคอลัมน์ (คีย์ผสม) และกำลังใช้ในเอนทิตีอื่นเป็นคีย์ต่างประเทศ จะสร้างความสัมพันธ์ได้อย่างไร? ใน scnerios ปกติเราใช้: public class Category { public string CategoryId { get; set; } public string Name { get; set; } public virtual ICollection&lt;Product&gt; Products { get; set; } } public class Product { public int ProductId { get; …

6
รหัส EF รหัสแรกที่ไม่มีคุณสมบัติการนำทาง
สมมติว่าฉันมีเอนทิตีต่อไปนี้: public class Parent { public int Id { get; set; } } public class Child { public int Id { get; set; } public int ParentId { get; set; } } รหัสคืออะไรแรกไวยากรณ์ API ได้อย่างคล่องแคล่วในการบังคับใช้ที่ parentId จะถูกสร้างขึ้นในฐานข้อมูลที่มีข้อ จำกัด ที่สำคัญต่างประเทศในตารางผู้ปกครองโดยไม่จำเป็นต้องมีคุณสมบัตินำทาง ? ฉันรู้ว่าถ้าฉันเพิ่มคุณสมบัติการนำทาง Parent ให้กับ Child ฉันจะทำได้: modelBuilder.Entity&lt;Child&gt;() .HasRequired&lt;Parent&gt;(c =&gt; c.Parent) .WithMany() …

8
ค่าดีฟอลต์สำหรับฟิลด์ที่ต้องการในการโอนย้าย Entity Framework?
ฉันได้เพิ่ม[Required]บันทึกย่อข้อมูลให้เป็นหนึ่งในรูปแบบของฉันในโปรแกรมประยุกต์ ASP.NET MVC หลังจากสร้างการโอนย้ายการรันUpdate-Databaseคำสั่งจะทำให้เกิดข้อผิดพลาดต่อไปนี้: ไม่สามารถแทรกค่า NULL ลงในคอลัมน์ 'Director', table 'MOVIES_cf7bad808fa94f89afa2e5dae1161e78.dbo.Movies'; คอลัมน์ไม่อนุญาตให้มีค่าว่าง UPDATE ล้มเหลว คำสั่งยุติแล้ว เนื่องจากบางระเบียนมีค่า NULL ในDirectorคอลัมน์ ฉันจะเปลี่ยนค่าเหล่านั้นให้เป็นค่าเริ่มต้น (พูดว่า "John Doe") โดยอัตโนมัติได้อย่างไร นี่คือโมเดลของฉัน: public class Movie { public int ID { get; set; } [Required] public string Title { get; set; } [DataType(DataType.Date)] public DateTime ReleaseDate { get; set; } …

3
วิธีระบุชื่อตารางด้วย Entity Framework Code First Fluent API
ฉันมีเอนทิตีและฉันต้องการกำหนดค่าเอนทิตีเฟรมเวิร์กเพื่อแมปกับตารางฐานข้อมูลที่มีชื่ออื่น ฉันสามารถทำได้อย่างง่ายดายด้วยCode First DataAnnotations ( DataAnnotations.Schema.TableAttribute ) แต่เนื่องจากข้อ จำกัด ในตอนนี้ฉันจึงต้องใช้Code First Fluent API (อ็อบเจ็กต์โดเมนของฉันจะถูกใช้โดยไคลเอนต์ภายนอกดังนั้นจึงไม่ควรใช้เฉพาะเทคโนโลยี - เช่นมีการอ้างอิงถึง DataAnnotations) ฉันค้นหาใน MSDN แต่ไม่พบอะไรเลย เป็นไปได้หรือไม่และอย่างไร ขอขอบคุณ.

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