2017-07-04 1 views
0

J'ai essayé d'utiliser le code pour la première fois après avoir toujours utilisé DBfirst mais pour une raison quelconque, il ne crée pas mes tables lorsque je cours mon projet et je n'ai aucune idée de ce que je manque même après avoir lu de nombreux messages de stackoverflow.Entity Les tables Framework ne sont pas créées (code d'abord)

I ont le code suivant:

Class.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace EdulySoft.Models 
{ 
    public partial class Class 
    { 
     public int Id { get; set; } 
     public int ClassRoomId { get; set; } 
     public string ClassName { get; set; } 
     public int MaxStudents { get; set; } 

     public virtual Classroom classrooms { get; set; } 
    } 
} 

classroom.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace EdulySoft.Models 
{ 
    public partial class Classroom 
    { 
     public Classroom() 
     { 
      this.classes = new HashSet<Class>(); 
     } 
     public int Id { get; set; } 
     public string ClassRoomName { get; set; } 

     public ICollection<Class> classes { get; set; } 
    } 
} 

SchoolContext

using System; 
using System.Collections.Generic; 
using System.Data.Entity; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace EdulySoft.Models 
{ 
    public class schoolContext : DbContext 
    { 

     public schoolContext() : base() 
     { 
     } 

     public DbSet<Class> Classes { get; set; } 
     public DbSet<Classroom> Classrooms { get; set; } 
    } 
} 

Program.cs

using EdulySoft.Models; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace EdulySoft 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 

      using (var ctx = new schoolContext()) 
      { 
       Class stud = new Class() { Id = 1, ClassName = "Loquat", MaxStudents = 12, ClassRoomId = 1 }; 

       ctx.Classes.Add(stud); 
       ctx.SaveChanges(); 
      } 
     } 
    } 
} 

App.config

<?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> 
    <connectionStrings> 
    <add name="EdulySoft.Properties.Settings.schoolContext" 
     connectionString="Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=Eduly;Integrated Security=True" 
     providerName="System.Data.SqlClient" /> 
    </connectionStrings> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" /> 
    </startup> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> 
    <providers> 
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> 
    </providers> 
    </entityFramework> 
</configuration> 

J'ai utilisé une application console vide pour commencer. Toute aide sera très appréciée. Acclamation!

+1

Avez-vous créé une migration et mis à jour la base de données? – mboldt

+0

Je n'ai pas encore créé de migration, est-ce nécessaire pour créer la base de données? –

+1

Oui. Après vos modifications, vous devez aller à la console du gestionnaire de paquets et tapez "Add-Migration your-migration-name". Vous verrez le code de la migration créée et vous pourrez taper "update-database" dans la console. Cela devrait mettre à jour votre base de données. Cependant, assurez-vous que votre projet EF est sélectionné sous "Projet par défaut" dans la console. – mboldt

Répondre

1

Vérifiez si vous recherchez la source de données correcte dans SQL Management Studio. Dans la chaîne de connexion est:

(localdb) \ MSSQLLocalDB

.

+0

Oui j'étais dans (localdb) \ MSSQLLocalDB, mais pour une raison quelconque, il l'a créé sur \ SQLEXPRESS. Je ne sais pas pourquoi il l'a fait depuis que j'ai spécifié (localdb) \ MSSQLLocalDB. En tout cas merci de m'avoir laissé vérifier comme j'ai maintenant trouvé ma base de données. À votre santé –