1) Requiere .NET framework 4 actualizado al menos a 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
caso de haber instalado últimas VS 2012 lo más probable es que ya tiene 4.0.2. Solo verifica primero.
2) A continuación debe tener una instancia de LocalDb
. De forma predeterminada, tiene una instancia cuyo nombre es un solo carácter v
seguido del número de versión de lanzamiento de LocalDB en el formato xx.x. Por ejemplo, v11.0
representa SQL Server 2012. Automatic instances are public by default. You can also have named instances which are private. Las instancias con nombre proporcionan aislamiento de otras instancias y pueden mejorar el rendimiento al reducir la contención de recursos con otros usuarios de la base de datos. You can check the status of instances using the SqlLocalDb.exe
utility (run it from command line).
3) A continuación la cadena de conexión debe verse como:
"Server=(localdb)\\v11.0;Integrated Security=true;"
o
"Data Source=(localdb)\\test;Integrated Security=true;"
a partir del código. They both are the same. Observe que se requieren los dos \\
porque \v
y \t
significan caracteres especiales. También tenga en cuenta que lo que aparece después de (localdb)\\
es el nombre de su instancia de LocalDb. v11.0
es la instancia pública predeterminada, test
es algo que he creado manualmente, que es privado.
Si usted tiene una base de datos (archivo .mdf) ya:
"Server=(localdb)\\Test;Integrated Security=true;AttachDbFileName= myDbFile;"
Si usted no tiene una base de datos del servidor SQL:
"Server=(localdb)\\v11.0;Integrated Security=true;"
Y puede crear su propia base de datos programática aliado:
a) para guardarlo en la ubicación predeterminada con la configuración predeterminada:
var query = "CREATE DATABASE myDbName;";
b) Para guardar en un lugar específico con sus propios ajustes personalizados:
// 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%)" +
";";
¡Y ejecutar!
una tabla de muestra se pueden cargar en la base de datos con algo como:
@"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');";
Tenga en cuenta que la utilidad SqlLocalDb.exe
NO DA acceso a bases de datos, es necesario separado sqlcmd
utilidad que es triste ..
EDITAR : posición movida de punto y coma; de lo contrario, se produciría un error si el código fuera copiado/pegado
No estoy diciendo que esta es la causa del problema, porque bien puede haber más, pero las barras invertidas son especiales en cadenas de C# a menos que las preceda por '@': '@" (LocalDB) \ v11.0 "'. – hvd
Es cierto que no agregué el símbolo @. Lo reintenté y devolví el mismo resultado. –
No hay una base de datos en su cadena de conexión. –