0
votes

I have an application which has three layers.I am using EntityFramework 6.1 and code first migrations using existing database.The three layers are given below:

1.Presententation Layer:ConceptuCodeFirstMigrationDemo Simply a Console Application for simplicity

Data Layer Consists of Context and Initializer.The codes are given below:

     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>
    {
    }
}

Appconfig:

<?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>

Domain Layer: Consists of entity class for example user

After writing a new class when I try to enable migrations using Enable-Migrations showing No context type was found in the assembly 'ConceptuCodeFirstMigrationDemo'.

After I tried the following command: Enable-Migrations -ContextTypeName ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext

this shows following error The context type 'ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext' was not found in the assembly 'ConceptuCodeFirstMigrationDemo'.

After I tried the following command Enable-Migrations ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext

It shows the following error

Enable-Migrations : A positional parameter cannot be found that accepts argument 'ConceptuCodeFirstMigrationDemo.Data.DataContext.Concept uContext'. At line:1 char:18 + Enable-Migrations <<<< ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext + CategoryInfo : InvalidArgument: (:) [Enable-Migrations], ParameterBindingException + FullyQualifiedErrorId : PositionalParameterNotFound,Enable-Migrations

1
are the three layers Presententation Layer, Data Layer and Domain Layer located in different projects? - Yuliam Chandra
Yes they are in different projects. - Joydip

1 Answers

0
votes

Try this.

Enable-Migrations -ContextTypeName ConceptuCodeFirstMigrationDemo.Data.DataContext.ConceptuContext -ProjectName ConceptuCodeFirstMigrationDemo