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; } ```