我想将实体传递给以下代码,它应该根据谓词插入新记录或更新。我无法更新记录。
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));
}