Работаю с помощью ado.net. Я создал дженерик репозиторий:
public class Repository<T> : IRepository<T> where T : class, IEntity
{
protected Table<T> DataTable;
public Repository(DataContext context)
{
DataTable = context.GetTable<T>();
}
public void Delete(T entity)
{
DataTable.Attach(entity);
}
public void Edit(T entity)
{
}
public void Insert(T entity)
{
DataTable.InsertOnSubmit(entity);
}
public IQueryable<T> GetAll()
{
return DataTable;
}
public T GetById(int id)
{
return DataTable.Single(e => e.Id.Equals(id));
}
public IQueryable<T> SearchFor(Expression<Func<T, bool>> predicate)
{
return DataTable.Where(predicate);
}
}
и хочу удалить объект, контроллер:
public IActionResult DeleteProject(int id)
{
var model = projects.GetById(id);
return View(model);
}
[HttpPost]
public IActionResult DeleteProject(Project project)
{
projects.Delete(project);
connection.SubmitChanges();
return RedirectToAction("Index");
}
при удалении вылетает ошибка:
System.InvalidOperationException: Cannot remove an entity that has not been attached.
окей я делаю
DataTable.Attache(entity)
далее ошибка
System.Data.Linq.DuplicateKeyException: 'Cannot add an entity with a key that is already in use.