Kioshilol
@Kioshilol
Student

Как исправить ошибку linq to sql?

Работаю с помощью 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.
  • Вопрос задан
  • 63 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы