在通过Entity Framework 4.1添加记录时,是否有直接的方法来检索数据库自动生成的主键?
例如:
dbcontext.Entity_Tables.Add(new Entity_Table { item1 = val1, item2 = val2 });
dbcontext.SaveChanges();
newPK = ???;
Run Code Online (Sandbox Code Playgroud)
SQL等价物将是:
newPK = executeOnDB("INSERT INTO Entity_Table (item1, item2) VALUES (val1, val2);SELECT @@Indentity";);
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我使用的是MySQL,但SQL与MSSQL上的相同
我在多个表中插入数据.我需要知道表中最后插入的(自动递增的)ID.我需要在其他表中将它用作Foriegn Key.
总之,我需要替代@@IdentityT-Sql.
我正在使用一个DbContext场景实例在WPF应用程序中本地隐藏数据库的整个副本.我听说这是不好的做法,但我的数据库很小,我需要在应用程序运行时在本地完整复制它.
一个扩展方法IQueryable,Load()让我预加载一个元素DbSet<>,这样我就可以将东西绑定到Local属性了DbSet<>.数据库中的数据变化很快,所以我想SaveChanges()重新加载所有内容,甚至是已经跟踪过的对象.Load()再次调用该方法不会更新已加载的已跟踪但未标记为已更改的项目.
重新加载预装物品的首选方法是DbSet<>什么?在我的脑海中,我只能想到调用SaveChanges(),然后遍历所有条目并将跟踪和原始值都设置为数据库中的当前值,然后Load()是可能添加的任何新对象.在我的场景中,不可能删除对象,但从长远来看,我可能不得不支持删除项目.这似乎不对,应该有办法放弃一切并重新加载.看起来更容易删除我的上下文并重新开始,但是WPF中的所有元素都已经绑定了Local´ObservableCollection<>,这只是弄乱了界面.