У меня есть приложение с тремя уровнями. Я использую EntityFramework 6.1 и кодирую первые миграции, используя существующую базу данных. Три уровня приведены ниже:
1.Уровень представления: ConceptuCodeFirstMigrationDemo Простое консольное приложение для простоты
Уровень данных состоит из контекста и инициализатора. Коды приведены ниже:
namespace ConceptuCodeFirstMigrationDemo.Data.DataContext
{
using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using ConceptuCodeFirstMigrationDemo.Domain;
public partial class ConceptuContext : DbContext,IDisposable
{
public ConceptuContext()
: base("name=ConceptuContext")
{
}
public virtual DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.WithRequired(e => e.User)
.HasForeignKey(e => e.CreatedBy)
.WillCascadeOnDelete(false);
}
}
}
ConceptuInitializer.Cs
namespace ConceptuCodeFirstMigrationDemo.Data.DataContext
{
public class ConceptuInitializer: System.Data.Entity.CreateDatabaseIfNotExists<ConceptuContext>
{
}
}
Конфиг приложения:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<contexts>
<context type="ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext, ConceptuCodeFirstMigrationDemo.Data">
<databaseInitializer type="ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuInitializer, ConceptuCodeFirstMigrationDemo.Data" />
</context>
</contexts>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="ConceptuContext" connectionString="data source=AMITABHA-PC;initial catalog=Conceptu;user id=sa;password=lovediya;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
Доменный уровень: состоит из класса сущностей, например пользователя.
После написания нового класса, когда я пытаюсь включить миграцию с помощью Enable-Migrations, отображается В сборке «ConceptuCodeFirstMigrationDemo» не найден тип контекста.
После того, как я попробовал следующую команду: Enable-Migrations -ContextTypeName ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext
это показывает следующую ошибку: Тип контекста «ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext» не найден в сборке «ConceptuCodeFirstMigrationDemo».
После того, как я попробовал следующую команду Enable-Migrations ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext
Он показывает следующую ошибку
Enable-Migrations: невозможно найти позиционный параметр, который принимает аргумент «ConceptuCodeFirstMigrationDemo.Data.DataContext.Concept uContext». В строке: 1 символ: 18 + Enable-Migrations ‹‹‹‹ ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext + CategoryInfo : InvalidArgument: (:) [Enable-Migrations], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Enable-Migrations