Я переношу свой код с EF на EF Core. У нас есть общий репозиторий. И этот Igenericreposirory наследуется Genericreposirory.
IGenericreposirory
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace DataLayer.Repositories.Base
{
public interface IGenericRepository<T, TKey> where T : class
{
T Add(T entity);
}
}
GenericRepository:
public class GeneralRepository<T, TKey> : IGenericRepository<T, TKey>
where T : class, IEntity<TKey>, new()
{
protected readonly DbContext DbContext;
internal DbSet<T> DbSet;
public GeneralRepository(DbContext dbContext)
{
if (dbContext == null)
throw new ArgumentNullException("dbContext");
this.DbContext = dbContext;
this.DbSet = this.DbContext.Set<T>();
}
public virtual T Add(T entity)
{
#region Argument Validation
if (entity == null)
{
throw new ArgumentNullException("entity");
}
#endregion
var obj = DbSet.Add(entity);
SaveChanges();
return obj;
}
}
Здесь я получаю 2 ошибки во время работы с ядром EF 1 при возврате obj как «Невозможно преобразовать из 'Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry' в 'T'»
2 в Savechange (), поскольку «имя savechanges ()» не существует в текущий контекст.
Насколько я знаю, ядро EF поддерживает все методы для выборки, вставки, добавления