| 

.NET C# Java Javascript Exception

5
Hallo Leute,

ich stehe grade vor einer schweren Aufgabe und hoffe ihr könnt mir helfen.
Ich habe eine ASP.Net MVC4 Anwendung erstellt und will die zum Kunden ausliefern. Nun brauche ich aber eine art Installation oder so... Das Programm auf den IIS Server zu bekommen ist ja nicht das Problem. Mein Problem ist:

1. Die Daten für die Datenbankverbindung müssen vom Nutzer eingegeben werden können
2. Mit den Infos muss die Datenbank mit ihren Tabellen auf dem Server erstellt werden

Prinzipiell soll es so aussehen, dass beim ersten Start der Nutzer aufgefordert wird die Verbindungsdaten einzugeben. Daraufhin sollen diese gespeichert und die Datenbank erstellt werden.

Ich hab gehört, dass man Programmtechnisch aus dem Entityframework ihrgendwie die Datenbank erstellen kann, dazu finde cih aber leider nichts...
25.11.2014
DerPunk 1,2k 1 7
2 Antworten
3
Also ich bekomme bei Google eine Unmenge an Seiten die sich damit beschäftigen.

Code-First: Database initialization

Various Strategies to Initialize Database in Entity Framework

Um mal zwei zu nennen. Um dann zur Laufzeit noch den Connection String zu setzen:
Set Connectionstring at runtime

Set Entity Framework Connection String at Runtime in C#
26.11.2014
JEwen 2,7k 5
Ja, danke :) Habs jetz auch schon gefunden. Code-First war das Stichwort für gute Ergebnisse.
DerPunk 26.11.2014
1
Um anderen die Suche zu erleichtern, werde ich hier meine Lösung einmal Präsentieren:

Schritt 1:
Dim UserIP = Request.ServerVariables("REMOTE_ADDR")
Dim ServerIP = Request.ServerVariables("LOCAL_ADDR")
If UserIP = ServerIP Then
' ### Der Code ### '
End If
Damit der Code nur vom Server direkt ausgeführt werden kann.

Schritt 2:
Dim config = WebConfigurationManager.OpenWebConfiguration("~")
Dim section = DirectCast(config.GetSection("connectionStrings"), ConnectionStringsSection)

Dim DefaultConnection As String = "Data Source={0};Initial Catalog={1};Persist Security Info=True;User ID={2};Password={3}"
section.ConnectionStrings("DefaultConnection").ConnectionString = String.Format(DefaultConnection, model.Servername, model.Datenbankname, model.Nutzer, model.Passwort)

Dim MyEntitiesCon As String = "metadata=res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl;provider=System.Data.SqlClient;provider connection string=""data source={0};initial catalog={1};persist security info=True;user id={2};password={3};multipleactiveresultsets=True;App=EntityFramework"""
section.ConnectionStrings("MyEntities").ConnectionString = String.Format(MyEntitiesCon, model.Servername, model.Datenbankname, model.Nutzer, model.Passwort)

config.Save()
Damit wird die neue Datenbankverbindung in die "web.config" gespeichert.

Schritt 3:
Dim db As New MyEntities
If Not db.DatabaseExists Then
db.CreateDatabase()
' ### Code für z.B. Account anlegen ### '
End If
Legt die Datenbank nach den Vorgaben des EF an. Dabei wird die in der "web.config" gespeicherte Verbindung genutzt.

Schritt 4:
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables:=True)
WebSecurity.CreateUserAndAccount(model.AdminName, model.AdminPasswort)
Dim newRole As New webpages_Roles
db.webpages_Roles.AddObject(newRole)
db.UserProfiles.First.webpages_Roles.Add(newRole)
db.SaveChanges()
Legt einen Adminaccount an.

Ich hoffe ich konnte dem einen oder anderen mit meiner Lösung helfen.
04.12.2014
DerPunk 1,2k 1 7

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH