1) Richiede .NET framework 4 aggiornato almeno alla 4.0.2.If you have 4.0.2, then you should have
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.2
Se avete installato gli ultimi VS 2012 è probabile che si dispone già di 4.0.2. Basta verificare prima.
2) Quindi è necessario disporre di un'istanza di LocalDb
. Per impostazione predefinita si dispone di un'istanza il cui nome è un singolo carattere v
seguito dal numero di versione del rilascio LocalDB nel formato xx.x. Ad esempio, v11.0
rappresenta SQL Server 2012. Automatic instances are public by default. You can also have named instances which are private. Le istanze con nome forniscono isolamento da altre istanze e possono migliorare le prestazioni riducendo il conflitto di risorse con altri utenti del database. You can check the status of instances using the SqlLocalDb.exe
utility (run it from command line).
3) Avanti la stringa di connessione dovrebbe essere simile:
"Server=(localdb)\\v11.0;Integrated Security=true;"
o
"Data Source=(localdb)\\test;Integrated Security=true;"
dal codice. They both are the same. Avviso i due \\
richiesti perché \v
e \t
indicano caratteri speciali. Si noti inoltre che ciò che appare dopo (localdb)\\
è il nome dell'istanza LocalDb. v11.0
è l'istanza pubblica predefinita, test
è qualcosa che ho creato manualmente che è privato.
Se si dispone di un database (.mdf file) già:
"Server=(localdb)\\Test;Integrated Security=true;AttachDbFileName= myDbFile;"
Se non si dispone di un database SQL Server:
"Server=(localdb)\\v11.0;Integrated Security=true;"
Ed è possibile creare il proprio database programmatico alleato:
a) per salvarlo nella posizione predefinita con l'impostazione di default:
var query = "CREATE DATABASE myDbName;";
b) salvarlo in una posizione specifica con le proprie impostazioni personalizzate:
// your db name
string dbName = "myDbName";
// path to your db files:
// ensure that the directory exists and you have read write permission.
string[] files = { Path.Combine(Application.StartupPath, dbName + ".mdf"),
Path.Combine(Application.StartupPath, dbName + ".ldf") };
// db creation query:
// note that the data file and log file have different logical names
var query = "CREATE DATABASE " + dbName +
" ON PRIMARY" +
" (NAME = " + dbName + "_data," +
" FILENAME = '" + files[0] + "'," +
" SIZE = 3MB," +
" MAXSIZE = 10MB," +
" FILEGROWTH = 10%)" +
" LOG ON" +
" (NAME = " + dbName + "_log," +
" FILENAME = '" + files[1] + "'," +
" SIZE = 1MB," +
" MAXSIZE = 5MB," +
" FILEGROWTH = 10%)" +
";";
Ed esegui!
una tabella di esempio possono essere caricati nel database con qualcosa di simile:
@"CREATE TABLE supportContacts
(
id int identity primary key,
type varchar(20),
details varchar(30)
);
INSERT INTO supportContacts
(type, details)
VALUES
('Email', '[email protected]'),
('Twitter', '@sqlfiddle');";
Nota che SqlLocalDb.exe
utilità doesnt consentono di accedere ai database, è necessario separatamente sqlcmd
programma di utilità che è triste ..
EDIT : posizione spostata del punto e virgola altrimenti si verificherà un errore se il codice è stato copiato/incollato
Non sto dicendo che questa è la causa del problema, perché potrebbe esserci di più, ma i backslash sono speciali nelle stringhe C# a meno che non li precediate da '@': '@" (LocalDB) \ v11.0 "'. – hvd
True Non ho aggiunto il simbolo @. Ho provato e ho restituito lo stesso risultato. –
Non c'è un database nella stringa di connessione. –