我想知道如果表中尚不存在插入记录的简便方法。我仍在尝试建立LINQ to SQL技能。

这就是我所拥有的,但似乎应该有一种更简单的方法。

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);

关于c# - LINQ to SQL插入(如果不存在),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/100068/

10-10 22:56