public RepositoryPatternGenerator(ISqlCeDatabase database, DataAccessLayerGeneratorOptions options, bool supportSqlCeTransactions = true, bool usesLinqToSql = false)
     : base(database)
 {
     this.options = options;
     this.supportSqlCeTransactions = supportSqlCeTransactions;
     this.usesLinqToSql            = usesLinqToSql;
 }
        public override void GenerateDataAccessLayer(DataAccessLayerGeneratorOptions options)
        {
            Trace.WriteLine("Generating Data Access Tests");

            code.AppendLine("\nnamespace " + Database.Namespace);
            code.AppendLine("{");

            code.AppendLine("\t[Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]");
            code.AppendLine("\tpublic class DataAccessTestBase");
            code.AppendLine("\t{");
            code.AppendLine("\t\t[Microsoft.VisualStudio.TestTools.UnitTesting.TestInitialize]");
            code.AppendLine("\t\tpublic void Initialize()");
            code.AppendLine("\t\t{");
            code.AppendLine("\t\t\tEntityBase.ConnectionString = @\"" + Database.ConnectionString + "\";");
            code.AppendLine("\t\t}");
            code.AppendLine();
            code.AppendLine("\t\t[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]");
            code.AppendLine("\t\tpublic void CreateCommandTest()");
            code.AppendLine("\t\t{");
            code.AppendLine("\t\t\tMicrosoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(EntityBase.CreateCommand());");
            code.AppendLine("\t\t}");
            code.AppendLine();
            code.AppendLine("\t\t[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethod]");
            code.AppendLine("\t\tpublic void ConnectionCanOpenTest()");
            code.AppendLine("\t\t{");
            code.AppendLine("\t\t\tvar expected = System.Data.ConnectionState.Open;");
            code.AppendLine("\t\t\tvar actual = EntityBase.Connection.State;");
            code.AppendLine("\t\t\tMicrosoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(expected, actual);");
            code.AppendLine("\t\t}");
            code.AppendLine("\t}");
            code.AppendLine();

            foreach (var table in Database.Tables)
            {
                code.AppendLine("\t[Microsoft.VisualStudio.TestTools.UnitTesting.TestClass]");
                code.AppendLine("\tpublic class " + table.TableName + "DataAccessTest : DataAccessTestBase");
                code.AppendLine("\t{");

                GenerateCreateTest(table);
                GenerateCreateWithParametersTest(table);
                GenerateSelectAllTest(table);
                GenerateSelectAllWithTopTest(table);
                GenerateSelectByTest(table);
                GenerateSelectByWithTopTest(table);
                GenerateDelete(table);
                GenerateDeleteBy(table);
                GenerateDeleteAll(table);
                GenerateSaveChanges(table);
                GeneratePopulate(table);

                code.AppendLine("\t}");
                code.AppendLine();
            }

            code.AppendLine("}");
            code.AppendLine();
        }