LINQ to SQL insert-if-non-existent

c#, linq-to-sql

Solution

public static void InsertIfNotExists<TEntity>
                    (this Table<TEntity> table,
                     TEntity entity,
                     Expression<Func<TEntity,bool>> predicate)
    where TEntity : class
{ 
    if (!table.Any(predicate)) 
    {
        table.InsertOnSubmit(record);
        table.Context.SubmitChanges();
    }
 }


table.InsertIfNotExists(entity, e=>e.BooleanProperty);

Problem

I'd like to know if there's an easier way to insert a record if it doesn't already exist in a table. I'm still trying to build my LINQ to SQL skills. Here's what I've got, but it seems like there should be an easier way. ``` public static TEntity InsertIfNotExists<TEntity> ( DataContext db, Table<TEntity> table, Func<TEntity,bool> where, TEntity record ) where TEntity : class { TEntity existing = table.SingleOrDefault<TEntity>(where); if (existing != null) { return existing; } else { table.InsertOnSubmit(record); // Can't use table.Context.SubmitChanges() // 'cause it's read-only db.SubmitChanges(); } return record; } ```

Original source