Note that there are some explanatory texts on larger screens.

plurals
  1. POHaving trouble with EF code first and mvc 3.0 relationships
    primarykey
    data
    text
    <p>I'm getting the following error when running my application. I'm forcing the application to do a DropCreateDatabaseAlways for my context so I'm not sure why it would say that I'm trying to insert multiple entities with the same key.</p> <p>There might be a problem with how User and Message are linked. I had to add:</p> <pre><code> modelBuilder.Entity&lt;Message&gt;() .HasRequired(m =&gt; m.UserSentFrom) .WithRequiredDependent() .WillCascadeOnDelete(false); </code></pre> <p>Just because I was getting a warning about circular reference and had to set the willcascadeondelete to false.</p> <p>If there is something wrong with my design, let me know, but this is what I'm trying to do: User has many Messages, Message has one FromUser Message has many ToUsers</p> <p>Any help will be appreciated as this is driving me crazy.</p> <p>{"Conflicting changes detected. This may happen when trying to insert multiple entities with the same key."}</p> <pre><code> public class User { public int Id { get; set; } [Required(ErrorMessage="Username is required")] public string Username { get; set; } [Required(ErrorMessage = "Password is required")] [DataType(DataType.Password)] public string Password { get; set; } [Required(ErrorMessage="Email Address is required")] [DataType(DataType.EmailAddress)] public string UserEmailAddress { get; set; } [DisplayFormat(DataFormatString="{0:d}",ApplyFormatInEditMode=true)] public DateTime DateCreated { get; set; } [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)] public DateTime LastUpdated { get; set; } public virtual ICollection&lt;Message&gt; Messages { get; set; } public User() { Messages = new List&lt;Message&gt;(); } } public class Message { public int Id { get; set; } public DateTime DateSent { get; set; } public virtual ICollection&lt;User&gt; UserSentTo { get; set; } public string Title { get; set; } public string Body { get; set; } public int UserSentFromId { get; set; } public virtual User UserSentFrom { get; set; } } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Entity&lt;Message&gt;() .HasMany(m =&gt; m.UserSentTo).WithMany(u =&gt; u.Messages) .Map(t =&gt; t.MapLeftKey("MessageId") .MapRightKey("UserId") .ToTable("MessagesUserSentTo")); modelBuilder.Entity&lt;Message&gt;() .HasRequired(m =&gt; m.UserSentFrom) .WithRequiredDependent() .WillCascadeOnDelete(false); } protected override void Seed(WebsiteGameContext context) { var users = new List&lt;User&gt; { new User { Username = "Admin", UserEmailAddress="admin@temp.com", DateCreated = DateTime.Now, LastUpdated = DateTime.Now}, new User { Username = "Member", UserEmailAddress="member@temp.com",DateCreated = DateTime.Now, LastUpdated = DateTime.Now} }; users.ForEach(u =&gt; context.Users.Add(u)); context.SaveChanges(); var messages = new List&lt;Message&gt; { new Message { DateSent=DateTime.Now, Title="Sent From Admin", Body="There should be 2 users that this was sent to", UserSentFromId=users[0].Id,UserSentTo= new List&lt;User&gt;()}, new Message { DateSent=DateTime.Now, Title="Sent From Member", Body="There should be 1 user that this was sent to", UserSentFromId=users[1].Id,UserSentTo= new List&lt;User&gt;()} }; messages.ForEach(m =&gt; context.Messages.Add(m)); context.SaveChanges(); messages[0].UserSentTo.Add(users[0]); messages[0].UserSentTo.Add(users[1]); messages[1].UserSentTo.Add(users[0]); context.SaveChanges(); } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

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