开发者

ObjectContext.SaveChanges and Duplicate PRIMARY Key

I have a pet project of mine written in php. One of jobs my code do is to load bunch of csv files and write them to MySQL table which have both autogenerated primary key and multipart unique key. I have no control and ways to check is some file already processed so unique key came handy. I insert data into table with INSERT IGNORE which silently fails when i try to insert data which already exist and everything works great as it should.

Now, I am trying to make similar project in C# 4 using LINQ To Entities but when I try to call ObjectContext.SaveChanges() method for objects from files which are already in table, UpdateException is thrown with SqlClient.SqlException as inner exception. One solution was adding Ignore Duplicate Keys = Yes to index and it kinda works but

Is there easy and elegant way to accomplish those inserts with L2E which does not involve database changes???


Another solution will be something like this:

public void SaveAll( IEnumerable<Entity> entities )
{
    var ids = entities.Select(x => x.Id).ToList();
    var idsToRemove = context.Entities.Where(x => ids.Contains(x.Id)).Select(x => x.Id).ToList();
    var entitiesToInsert = entities.Where(x => !idsToRemove.Contains(x.Id));

    foreach(var entity in entitiesToInsert)
        context.Entities.AddObject(entity);
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜