2017-09-24 5 views
-2

Je travaille sur un programme en ce moment mais mon problème est que lorsque l'utilisateur ouvre le programme, le programme donne une erreur car il n'y a pas de base de données le programme peut utiliser. Comment puis-je créer mes propres bases de données dans l'ordinateur de l'utilisateur quand il/elle ouvre le programme? (Les bases de données sont sur sql à propos)Comment puis-je créer des bases de données avec C# lors de la première exécution du programme?

Répondre

0

Vous devriez rechercher Entity Framework, il vous permettra de faire exactement ce que vous vouloir. Regardez spécifiquement pour la première approche de code.

Vous pouvez également spécifier le nom de la base de données en tant que paramètre dans un constructeur de base de la classe de contexte. Si vous spécifiez un paramètre de nom de base de données, Code First crée une base de données avec le nom que vous avez spécifié dans le constructeur de base dans le serveur de base de données SQLEXPRESS local. Par exemple, Code First créera une base de données nommée MySchoolDB pour la classe de contexte suivante.

Plus de détails peuvent être trouvés ici

http://www.entityframeworktutorial.net/code-first/database-initialization-in-code-first.aspx

namespace SchoolDataLayer 
    { 
      public class Context: DbContext 
      { 
      public Context(): base("MySchoolDB") 
      { 

      } 
      } 
    } 
+0

Merci beaucoup: D – HeroOfSkies

0

Vous pouvez utiliser modèle d'injection de dépendance avec Autofac pour charger la base de données lors de l'exécution.

More details here

Le contrôleur MVC:

public HomeController: Controller 
{ 
private readonly IDataAccessLayer _layer; 
public HomeController(IDataAccessLayer Layer) 
{ 
    this._layer = layer; 
    _layer.StartUpDatabase(); 
} 

} 

L'interface IDataAccessLayer:

public interface IDataAccessLayer 
{ 
Task StartUpDatabase(); 
} 

La classe DataAccessLayer:

public DataAccessLayer: IDataAccessLayer 
{ 

public async Task StartUpDatabase() 
{ 
//Try to get a connection handle of the SQL Server database 
} 

} 

Et dans le fichier Global.asax.cs, enregistrer les dépendances de Autofac.

var builder = new ContainerBuilder(); 
builder.RegisterType<DataAccessLayer>().As<IDataAccessLayer>(); 
var container = builder.Build();