LINQ to SQL基于传递的谓词插入或更新

时间:2016-03-20 19:49:17

标签: c# sql linq linq-to-sql predicate

我想将实体传递给以下代码,它应该根据谓词插入新记录或更新。我无法更新记录。

public static T AddOrUPdate<T>(this Table<T> dbSet, T entity, Expression<Func<T, bool>> predicate = null) where T : class, new()
        {
            var exists = predicate != null ? dbSet.Any(predicate) : dbSet.Any();
            if (!exists)
            {
                dbSet.InsertOnSubmit(entity);
            }
            else
            {
               // var result = dbSet.Where(predicate).SingleOrDefault();
                T result = (from p in dbSet.Where(predicate) select p).SingleOrDefault();
  result = entity;

            }
            dbSet.Context.SubmitChanges();
}

Linq代码

 using (LinqTodbDataContext db = new LinqTodbDataContext())
                {
DatabaseLogic.Course newEntity = new DatabaseLogic.Course();
                        newEntity.Active = model.Active ; 
                        newEntity.CoursesId = model.CoursesId;
                        newEntity.Name = model.Name;
                        newEntity.Number = model.Number;
                   db.Courses.AddIfNotExists(newEntity, e => e.CoursesId.Equals(model.CoursesId));
}

0 个答案:

没有答案