У меня следующая проблема с .NET Core и Entity Framework.Я создал сам проект .NET Core, добавил DbContext
и все остальное.Моя проблема в том, что я могу загрузить данные без малейшей проблемы, к сожалению, я не могу их сохранить, т.е. у меня есть метод Add
, но у меня нет метода SaveChanges
.
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using CRM.Model.Entities;
namespace CRM.Model.Concrete
{
public abstract class ApplicationContext : IdentityDbContext<ApplicationUser>
{
public ApplicationContext(DbContextOptions<ApplicationContext> options) : base(options)
{
}
public DbSet<Category> Categories { get; set; }
public DbSet<Subcategory> Subcategories { get; set; }
public DbSet<SubcategoryL2> SubcategoriesL2 { get; set; }
public DbSet<Event> Events { get; set; }
public DbSet<ApplicationUser> Users { get; set; }
public DbSet<Coupon> Coupons { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
builder.Entity<SubcategoryL2>().ToTable("Subs");
#region "Seed Data"
builder.Entity<IdentityRole>().HasData(
new { Id = "1", Name = "Admin", NormalizedName = "ADMIN" },
new { Id = "2", Name = "User", NormalizedName = "USER" }
);
#endregion
}
}
}
ICouponRepository
using System.Threading.Tasks;
using CRM.Model.Concrete;
namespace CRM.Repository.Abstract
{
public interface ICouponRepository
{
Task AddCoupon(Coupon coupon);
}
}
CouponRepository
using System.Threading.Tasks;
using CRM.Model.Concrete;
using CRM.Repository.Abstract;
namespace CRM.Repository.Concrete
{
public class CouponRepository : ICouponRepository
{
private readonly ApplicationContext _applicationContext;
public CouponRepository(ApplicationContext applicationContext)
{
_applicationContext = applicationContext;
}
public async Task AddCoupon(Coupon coupon)
{
await _applicationContext.Coupons.AddAsync(coupon);
await _applicationContext.SaveChangesAsync();
}
}
}
И проблема здесь в CouponRepository, то есть 
Я понятия не имею, как яможет исправить это и почему это не работает: (
CS1061 Элемент «ApplicationContext» не содержит определения «SaveChangesAsync», а доступный метод расширения «SaveChangesAsync» не найден, который принимаетпервый аргумент типа «ApplicationContext» (не директива using или ссылка на комплект?).
вторая ошибка
CS0012 C # «IdentityDbContext <>»тип определен в наборе без ссылок. Необходимо добавить ссылку на набор "Microsoft.AspNetCore.Identity.EntityFrameworkCore, версия = 2.2.0.0, культура = нейтральная, PublicKeyToken = adb9793829ddae60"
Мой проект разделен на несколько более мелких, то есть основной проект CRM.В нем есть несколько меньших:
- CRM.Core
- CRM.Services
- CRM.Repository
- CRM.Resources
- CRM.Model
Проблема в том, что без малейшей проблемы я использую ApplicationContext для извлечения данных из базы данных, к сожалению, я не могу сохранить какие-либо данные с ним, потому что ошибка появляется как
когда я меняю
открытый абстрактный класс ApplicationContext: IdentityDbContext
на
открытый абстрактный классApplicationContext: DbContext
тогда все в порядке, но тогда идентификация не будет работать для меня
Решение: Решением моей проблемы была установка Microsoft.Пакет AspNetCore.Identity.EntityFrameworkCore через пакет NuGet.