jueves, 11 de febrero de 2010

Borrar la tabla asociada a una entidad con LinQ

El código para borrar la tabla de una entidad de LinQ (asumiendo que tenemo una referencia al dataContext en this.DataContext) sería:


public void DeleteTable() where T : class
{
Table table = this.DataContext.GetTable();
string tableName = table.ToString();
int tableNameStartIndex = tableName.IndexOf('(') + 1;
tableName = tableName.Substring(tableNameStartIndex, tableName.Length - tableNameStartIndex - 1);

this.DataContext.ExecuteCommand(String.Format("delete from {0}", tableName));
this.DataContext.ExecuteCommand(String.Format("DBCC CHECKIDENT ('{0}', RESEED, 0)", tableName));
this.DataContext.SubmitChanges();
}

StyleCop

Stylecop es una herramienta para verificar el código fuente de un proyecto contra un conjunto de reglas de estilo preestablecidas que definen buenas prácticas a la hora de escribir código fuente. Incluyen validaciones sobre el uso la identación, el uso de espacios, el uso de paréntesis, cuando abrir y cerrar llaves, etc. Ayuda mucho a lograr un código fuente mucho más unificado.

El stylecop se puede bajar de aqui

Si deseáramos que el StyleCop nos arroje errores cada vez que encuentra una violación de estilo tenemos que abrir nuestro archivo csproj y agregar las siguientes lineas. En la seccion PropertyGroup agregar el tag StyleCopTreatErrorsAsWarnings



...
false




Luego agregamos un import que haga referencia al archivo msbuild predefinido del Stylecop de la siguiente manera


Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" />


Hay que acordarse que si se decide ignorar alguna regla del StyleCop (y sobre todo si se tiene un ambiente de integración continua) habría que subir al svn (o el repositorio de código que se esté usando) el archivo Settings.StyleCop que se encuentra en el mismo directorio que el proyecto.

viernes, 22 de enero de 2010

Un ejemplo de MSBuild

Asi podría quedar nuestro archivo MSBUILD


.




























Properties="Configuration=Debug;Platform=Any CPU;" Targets="Clean"/>



Properties="Configuration=Debug;Platform=Any CPU;"/>



DestinationFiles="$(WorkingDirectory)\app.config" />




Files="@(LocalBuildBeginDBScripts)" ContinueOnError="false" />



Assemblies="@(TestAssemblyData)"
OutputXmlFile="$(ArtifactsDirectory)\nunit-results-data.xml"
WorkingDirectory="$(WorkingDirectory)\Project.Tests\bin\Debug"
ToolPath="C:\Program files\NUnit 2.4.7\bin"/>




Podemos tener otro archivo que extienda el comportamiento del anterior y sea por ejemplo







C:\...\trunk C:\...\trunk\Build
C:\Program files\NUnit 2.4.7\bin\nunit-console.exe




Server=localhost;user id=sa;password=sa;Trusted_Connection=False;


Server=localhost;user...;database=DB;