Не удалось загрузить файл или сборку «System.ComponentModel.DataAnnotations» в Visual Studio 2017 при выполнении первых миграций кода - PullRequest
0 голосов
/ 04 июля 2018

Здесь я пытаюсь разработать проект .NetFrameworkCore в VS 2017. У меня есть решение с двумя проектами

  1. Библиотека классов
  2. Основное приложение ASP .net

Я хотел создать миграцию, для которой я могу использовать enable-migrations и add-migration InitialCreate. До этого я настраивал свой проект в startUp.cs так:

    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();
        //======================================Setting ConnectionString to Database
        services.AddDbContext<EfDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DbCon")));
        //services.AddCors();
        //======================API Level and Function Level
        services.AddCors(action => action.AddPolicy("PolicyName", //============Adding Policy which was Created in the api 
            builder => builder.WithOrigins("http://localhost:4200") //Adding access the URL for giving access to the URL(s)
            .WithMethods("Get", "Post", "Put", "Delete")// Adding access to the method(s) for the request from the 'URL'
            .AllowAnyHeader()));//Adding access to any headers from the 'URL'

    }

Что совершенно нормально. У меня есть EfDbContext, как это:

    public EfDbContext(DbContextOptions options) : base(options)
    {
    }
    public DbSet<utblPhoto> utblPhotos { get; set; }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        EfConfiguration(modelBuilder);
    }
    private static void EfConfiguration(ModelBuilder modelBuilder)
    {
       //**************************************Table Mapping 
       modelBuilder.Entity<utblPhoto>().ToTable("utblPhoto");
    }

Мой utblPhoto класс находится в ClassLibrary Project, где у меня вот так:

public class utblPhoto
{
    [Key]
    public int PhotoId { get; set; }
    public string PhotoTitle { get; set; }
    public string PhotoDescription { get; set; }
    public string PhotoUrl { get; set; }
    public DateTime CreatedDate { get; set; }
    public DateTime UpdatedOn { get; set; }
    public string UpdatedBy { get; set; }
}

Для ключевой аннотации я использовал System.ComponentModel.DataAnnotations Это потому, что я не нашел System.Data.Entity.Core. Компиляция решения работает нормально, но при создании миграции у меня возникает ошибка с указанием Could not load file or assembly 'System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified.

Я думаю, есть две возможности

  1. Я использую основное приложение ASP.net, в котором у меня есть проект ClassLibrary, из-за которого у меня появляется указанная ошибка
  2. во время миграции ищет System.Data.Entity.Core для EF6

Как мне перенести EfDbClasses в SQL Server, используя Code First Migrations.

1 Ответ

0 голосов
/ 04 июля 2018

В вашем коде нет ничего плохого. Я предлагаю вам настроить вашу модель с помощью Fluent API Configurations в EF 6 в вашем EfConfiguration. Просто попробуйте это.

private static void EfConfiguration(ModelBuilder modelBuilder)
{
   modelBuilder.Entity<utblPhoto>().ToTable("utblPhoto");
   modelBuilder.Entity<utblPhoto>().HasKey(t=> new {t.PhotoId});
}

Полное руководство можно найти здесь . Надеюсь, это поможет вам.

...