public string UpdateMapping(string udtFileContents, string mappingFileContents, string identifier, string newident) { StringReader udtsr = new StringReader(udtFileContents); StringReader mappingsr = new StringReader(mappingFileContents); UDTCompiler udtCompiler = new UDTCompiler(); udtCompiler.Compile(udtsr); MappingCompiler mappingCompiler = new MappingCompiler(udtCompiler); mappingCompiler.Compile(mappingsr); foreach (TypeMapping tm in mappingCompiler.DefinedMappings) { if (tm.Identifier == identifier) { tm.Identifier = newident; } } MappingWriter mappingWriter = new MappingWriter(); mappingWriter.Mappings.AddRange(mappingCompiler.DefinedMappings); StringBuilder sb = new StringBuilder(); mappingWriter.Write(new StringWriter(sb)); return(sb.ToString()); }
public void TestNaturalKey() { //arrange var schema = new DatabaseSchema(null, null); var diagrams = schema.AddTable("Diagrams") .AddColumn("diagram_id", DbType.Int32).AddPrimaryKey() .AddColumn <string>("name").AddLength(10).AddUniqueKey() .AddColumn <int>("principal_id") .Table; diagrams.UniqueKeys.Single().AddColumn(diagrams.FindColumn("principal_id")); DatabaseSchemaFixer.UpdateReferences(schema); var settings = new CodeWriterSettings { Namespace = "MyTest", CodeTarget = CodeTarget.PocoNHibernateHbm }; PrepareSchemaNames.Prepare(schema, settings.Namer); //act var target = new MappingWriter(diagrams, settings); var txt = target.Write(); //assert var errors = Validate(txt); Assert.IsFalse(errors); }
public void TestCompositeKey() { //arrange var schema = new DatabaseSchema(null, null); var orderDetail = schema.AddTable("OrderDetails") .AddColumn("OrderID", DbType.Int32).AddPrimaryKey() .AddColumn("ProductID", DbType.Int32) .AddColumn <int>("UnitPrice") .Table; orderDetail.PrimaryKey.AddColumn(orderDetail.FindColumn("ProductID")); DatabaseSchemaFixer.UpdateReferences(schema); var settings = new CodeWriterSettings { Namespace = "MyTest", CodeTarget = CodeTarget.PocoNHibernateHbm }; PrepareSchemaNames.Prepare(schema, settings.Namer); //act var target = new MappingWriter(orderDetail, settings); var txt = target.Write(); //assert var errors = Validate(txt); Assert.IsFalse(errors); }
public void TestSimpleMapping() { //arrange var schema = new DatabaseSchema(null, null); schema.AddTable("Categories") .AddColumn("CategoryId", DbType.Int32).AddPrimaryKey() .AddColumn("CategoryName", DbType.String); var products = schema.AddTable("Products") .AddColumn("ProductId", DbType.Int32).AddPrimaryKey() .AddColumn("ProductName", DbType.String) .AddColumn("CategoryId", DbType.Int32).AddForeignKey("fk", "Categories") .Table; DatabaseSchemaFixer.UpdateReferences(schema); var settings = new CodeWriterSettings { Namespace = "MyTest", CodeTarget = CodeTarget.PocoNHibernateHbm }; PrepareSchemaNames.Prepare(schema, settings.Namer); //act var target = new MappingWriter(products, settings); var txt = target.Write(); //assert var errors = Validate(txt); Assert.IsFalse(errors); }
private void WriteMapping(DatabaseTable table, ProjectWriter pw) { string fileName; switch (_codeWriterSettings.CodeTarget) { case CodeTarget.PocoNHibernateFluent: fileName = WriteFluentMapping(table); pw.AddClass(@"Mapping\" + fileName); break; case CodeTarget.PocoNHibernateHbm: var mw = new MappingWriter(table, _codeWriterSettings); var txt = mw.Write(); fileName = table.NetName + ".hbm.xml"; var path = Path.Combine(_mappingPath, fileName); File.WriteAllText(path, txt); pw.AddMap(@"mapping\" + fileName); break; case CodeTarget.PocoEntityCodeFirst: case CodeTarget.PocoRiaServices: var cfmw = new CodeFirstMappingWriter(table, _codeWriterSettings, _mappingNamer); var cfmap = cfmw.Write(); fileName = cfmw.MappingClassName + ".cs"; var filePath = Path.Combine(_mappingPath, fileName); File.WriteAllText(filePath, cfmap); pw.AddClass(@"Mapping\" + fileName); break; } }
public void ExportOutputMappings(IEnumerable <TypeMapping> list, string file) { MappingWriter mappingWriter = new MappingWriter(); foreach (TypeMapping tm in list) { mappingWriter.Mappings.Add(tm); } lock (s_udomLock) mappingWriter.Write(file); }
// Writes the UDT and mapping files to the specified path, containing the specified types and mappings. private void WriteMappingsTo(string path, IEnumerable <UserDefinedType> userDefinedTypes, IEnumerable <TypeMapping> userDefinedMappings) { // Determine the paths to the UDT and mapping files string udtFilePath = Path.Combine(path, "UserDefinedTypes.ecaidl"); string mappingFilePath = Path.Combine(path, "UserDefinedMappings.ecamap"); // Create the writers to generate the files UDTWriter udtWriter = new UDTWriter(); MappingWriter mappingWriter = new MappingWriter(); // Add the UDTs and mappings to the writers udtWriter.Types.AddRange(userDefinedTypes); mappingWriter.Mappings.AddRange(userDefinedMappings); // Generate the files udtWriter.Write(udtFilePath); mappingWriter.Write(mappingFilePath); }
public void WriteNHibernateMappingInverseForeignKeyTest() { //arrange var schema = ArrangeSchema(); var table = schema.FindTableByName("Orders"); var cw = new MappingWriter(table, new CodeWriterSettings()); //act var txt = cw.Write(); //assert var hasBillingAddress = txt.Contains("<many-to-one name=\"BillingAddress\" class=\"Address\" />"); var hasDeliveryAddress = txt.Contains("<many-to-one name=\"DeliveryAddress\" class=\"Address\" />"); Assert.IsTrue(hasBillingAddress); Assert.IsTrue(hasDeliveryAddress); }
public void WriteNHibernateMappingForeignKeyTest() { //arrange var schema = ArrangeSchema(); var table = schema.FindTableByName("Address"); var cw = new MappingWriter(table, new CodeWriterSettings()); //act var txt = cw.Write(); //assert var hasBillingAddress = txt.Contains("<bag name=\"BillingAddressCollection\" table=\"`Orders`\""); var hasDeliveryAddress = txt.Contains("<bag name=\"DeliveryAddressCollection\" table=\"`Orders`\""); Assert.IsTrue(hasBillingAddress); Assert.IsTrue(hasDeliveryAddress); }
public string UpdateMappingForUDT(string udtFileContents, string mappingFileContents, string category, string identifier, string newcat, string newident) { StringReader udtsr = new StringReader(udtFileContents); StringReader mappingsr = new StringReader(mappingFileContents); UDTCompiler udtCompiler = new UDTCompiler(); udtCompiler.Compile(udtsr); MappingCompiler mappingCompiler = new MappingCompiler(udtCompiler); mappingCompiler.Compile(mappingsr); foreach (DataType dt in udtCompiler.DefinedTypes) { if (dt.Category == category && dt.Identifier == identifier) { if (newcat != null) { dt.Category = newcat; } if (newident != null) { dt.Identifier = newident; } } } MappingWriter mappingWriter = new MappingWriter(); mappingWriter.Mappings.AddRange(mappingCompiler.DefinedMappings); StringBuilder sb = new StringBuilder(); mappingWriter.Write(new StringWriter(sb)); return(sb.ToString()); }