问题描述
如果表中不存在记录,我想知道是否有更简单的方法来插入记录.我仍在努力培养我的 LINQ to SQL 技能.
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; }
推荐答案
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);