i inherited asp.net mvc 4 app using entity framework , keep getting duplicate records on related tables. haven't been able figure out why happening , happens randomly.
the models such:
company-> has manyusers-> has manyuserrolesuserrolesreferencesrolestable hasroleid,name.
it duplicating entries in roles table. have been trying figure out pretty new ef , of that.
userrole.cs partial class:
public static bool updateuserroles(int userid, list<int> roleids) { using (var context = new imagetrackerentities()) { var userroles = context.userroles.where(r => r.userid == userid).tolist(); foreach (var role in userroles) { // not remove users super admin role context.entry(role).state = entitystate.deleted; } foreach (var id in roleids) { var ur = new userrole() { roleid = id, userid = userid }; context.entry(ur).state = entitystate.added; } context.savechanges(); return true; } }
to notice whats happened more precisely , try activate ef log can see sql generated (if using ef6 (current version of course)). :
using (var context = new blogcontext()) { //you need add context.database.log = console.write; var blog = context.blogs.first(b => b.title == "one unicorn"); blog.posts.first().title = "green eggs , ham"; blog.posts.add(new post { title = "i not them!" }); context.savechanges(); } this generate following output:
select top (1) [extent1].[id] [id], [extent1].[title] [title] [dbo].[blogs] [extent1] (n'one unicorn' = [extent1].[title]) , ([extent1].[title] not null) -- executing @ 7/17/2015 10:55:41 -07:00 -- completed in 4 ms result: sqldatareader
Comments
Post a Comment