Ho un primo modello di database di Entity Framework.
Voglio scrivere un test MSTest / nUnit per verificare che tutti i processi, le tabelle e le viste memorizzati definiti nel mio modello edmx siano ancora validi sul database.
Ho trovato la risposta:
var list = context.MetadataWorkspace.GetItems<EdmFunction>(DataSpace.SSpace).Where(i=>i.ReturnParameter == null);
Questo ha restituito lo schema corretto e il nome della stored procedure. Allora potrei chiamare per ogni articolo nella lista:
var sqlCommands = string.Format("SELECT 'x' FROM sys.objects WHERE object_id = OBJECT_ID(N'{0}') AND type in (N'P', N'PC')", storedProcedureName);
var exists = dbContext.Database.SqlQuery<string>(sqlCommands).Any();
Interroga le tabelle di sistema . Ciò verificherà la presenza di tutti gli oggetti richiesti nel tuo database.
Ad esempio, la seguente query utilizza la vista del catalogo sys.objects per restituire tutti gli oggetti del database che sono stati modificati negli ultimi 10 giorni.
SELECT name AS object_name
,SCHEMA_NAME(schema_id) AS schema_name
,type_desc
,create_date
,modify_date
FROM sys.objects
WHERE modify_date > GETDATE() - 10
ORDER BY modify_date;
Vedi anche
Interrogazione il catalogo di sistema di SQL Server
Codice ADO.NET Esempi
Leggi altre domande sui tag unit-testing database entity-framework