Note that there are some explanatory texts on larger screens.

plurals
  1. POEntity Framework: Duplicate Records in Many-to-Many relationship
    text
    copied!<p>I have following entity framework code first code. The tables are created and data is inserted. However there are duplicate records in Club table.</p> <p>My operations are:-</p> <ol> <li><p>Create clubs using club creation app</p></li> <li><p>Create persons using person app</p></li> </ol> <p>How to avoid the duplicate entry?</p> <p><img src="https://i.stack.imgur.com/hoMZC.png" alt="enter image description here"></p> <pre><code> static void Main(string[] args) { Database.SetInitializer&lt;NerdDinners&gt;(new MyInitializer()); CreateClubs(); InsertPersons(); } public static void CreateClubs() { string connectionstring = "Data Source=.;Initial Catalog=NerdDinners;Integrated Security=True;Connect Timeout=30"; using (var db = new NerdDinners(connectionstring)) { Club club1 = new Club(); club1.ClubName = "club1"; Club club2 = new Club(); club2.ClubName = "club2"; Club club3 = new Club(); club3.ClubName = "club3"; db.Clubs.Add(club1); db.Clubs.Add(club2); db.Clubs.Add(club3); int recordsAffected = db.SaveChanges(); } } public static Club GetClubs(string clubName) { string connectionstring = "Data Source=.;Initial Catalog=NerdDinners;Integrated Security=True;Connect Timeout=30"; using (var db = new NerdDinners(connectionstring)) { //var query = db.Clubs.Where(p =&gt; p.ClubName == clubName); var query = db.Clubs.SingleOrDefault(p =&gt; p.ClubName == clubName); return query; } } public static void InsertPersons() { string connectionstring = "Data Source=.;Initial Catalog=NerdDinners;Integrated Security=True;Connect Timeout=30"; using (var db = new NerdDinners(connectionstring)) { Club club1 = GetClubs("club1"); Club club2 = GetClubs("club2"); Club club3 = GetClubs("club3"); Person p1 = new Person(); p1.PersonName = "Person1"; Person p2 = new Person(); p2.PersonName = "Person2"; List&lt;Club&gt; clubsForPerson1 = new List&lt;Club&gt;(); clubsForPerson1.Add(club1); clubsForPerson1.Add(club3); List&lt;Club&gt; clubsForPerson2 = new List&lt;Club&gt;(); clubsForPerson2.Add(club2); clubsForPerson2.Add(club3); p1.Clubs = clubsForPerson1; p2.Clubs = clubsForPerson2; db.Persons.Add(p1); db.Persons.Add(p2); int recordsAffected = db.SaveChanges(); } } </code></pre> <p>Domain</p> <pre><code>public class Person { public int PersonId { get; set; } public string PersonName { get; set; } public virtual ICollection&lt;Club&gt; Clubs { get; set; } } public class Club { public int ClubId { get; set; } public string ClubName { get; set; } public virtual ICollection&lt;Person&gt; Members { get; set; } } //System.Data.Entity.DbContext is from EntityFramework.dll public class NerdDinners : System.Data.Entity.DbContext { public NerdDinners(string connString): base(connString) { } protected override void OnModelCreating(DbModelBuilder modelbuilder) { //Fluent API - Plural Removal modelbuilder.Conventions.Remove&lt;PluralizingTableNameConvention&gt;(); } public DbSet&lt;Person&gt; Persons { get; set; } public DbSet&lt;Club&gt; Clubs { get; set; } } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload