I started thinking of some ways .NET could do what RoR does. If anyone doesn't know. Give this wiki a quick read: http://manuals.rubyonrails.com/read/chapter/26
My thoughts would be to write a schema, and use xml to create a fixture (RoR uses YAML for this).
Here is an example of what the XML could look like:
<?xml version="1.0" encoding="utf-8" ?>
<tables xmlns="http://tempuri.org/DBXML.xsd">
<table name="SomeTable">
<columns>
<column name="test" dbType="int"/>
</columns>
<valueSets>
<values>1</values>
</valueSets>
</table>
<table name="Users">
<columns>
<column name="name" dbType="varchar"/>
<column name="username" dbType="varchar"/>
</columns>
<valueSets>
<values>jason,skeeterbug</values>
<values>amber,amberlynn</values>
<values>riley,bubba</values>
</valueSets>
</table>
</tables>
The idea would be to have a library that parses it and inserts your data based on the fixture. So in your Setup(), you can simply call the library to get your data fresh for each run. The library could also support properties and functions to get the data from the fixtures for dynamic testing, like the RoR fixtures (just not as dynamic as ruby). Let me know what your guys thoughts are on this. The schema can be re-worked, I am no XML expert
Here is the schema for the above XML:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DBXML" targetNamespace="http://tempuri.org/DBXML.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/DBXML.xsd" xmlns:mstns="http://tempuri.org/DBXML.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="tableType">
<xs:all>
<xs:element name="columns" type="columns" />
<xs:element name="valueSets" type="valueSet" maxOccurs="1" minOccurs="0" />
</xs:all>
<xs:attribute name="name" type="xs:string" />
</xs:complexType>
<xs:complexType name="columns">
<xs:sequence>
<xs:element name="column" type="columnType" maxOccurs="1000" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="columnType">
<xs:sequence>
</xs:sequence>
<xs:attribute name="name" type="xs:string" />
<xs:attribute name="dbType" type="dbType" />
</xs:complexType>
<xs:element name="tables">
<xs:complexType>
<xs:sequence>
<xs:element name="table" type="tableType" minOccurs="0" maxOccurs="500" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="dbType">
<xs:restriction base="xs:string">
<xs:enumeration value="int" />
<xs:enumeration value="varchar" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="valueSet">
<xs:sequence>
<xs:element name="values" type="xs:string" maxOccurs="9000" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:schema>