public void MappingSharedPrimaryKeyTest() { //arrange var schema = new DatabaseSchema(null, null); schema .AddTable("vehicle") .AddColumn <string>("regnum").AddPrimaryKey().AddLength(25) .AddColumn <string>("model").AddLength(32) .AddTable("car") .AddColumn <string>("regnum").AddLength(25).AddPrimaryKey().AddForeignKey("fk", "vehicle") .AddColumn <int>("doors"); //make sure it's all tied up DatabaseSchemaFixer.UpdateReferences(schema); //make sure .Net names are assigned PrepareSchemaNames.Prepare(schema, new Namer()); var table = schema.FindTableByName("car"); var mappingNamer = new MappingNamer(); var codeWriterSettings = new CodeWriterSettings { CodeTarget = CodeTarget.PocoEntityCodeFirst }; var target = new CodeFirstMappingWriter(table, codeWriterSettings, mappingNamer); //act var txt = target.Write(); //assert var hasScalarKey = txt.Contains("HasKey(x => x.Regnum);"); var hasForeignKey = txt.Contains("HasRequired(x => x.Vehicle);"); Assert.IsTrue(hasScalarKey); Assert.IsTrue(hasForeignKey); }
public void MappingNameWithConflictsTest() { //arrange var schema = new DatabaseSchema(null, null); var table = schema.AddTable("Products") .AddColumn("ProductId", DbType.Int32).AddPrimaryKey().AddIdentity() .Table; table.NetName = "Product"; //we need datatypes schema.DataTypes.Add(new DataType("INT", "System.Int32")); //make sure it's all tied up DatabaseSchemaFixer.UpdateReferences(schema); var mappingNamer = new MappingNamer(); var target = new CodeFirstMappingWriter(table, new CodeWriterSettings(), mappingNamer); //we also have a table called "ProductMapping" //so we can't call the mapping class for "Product" the same name mappingNamer.EntityNames.Add("ProductMapping"); mappingNamer.EntityNames.Add("ProductMappingMap"); //act target.Write(); //now the name is assigned var className = target.MappingClassName; //assert Assert.AreEqual("ProductMappingMapMap", className, "Should not conflict with the existing names"); Assert.AreEqual(3, mappingNamer.EntityNames.Count, "Should add the name to the list"); }
public FluentMappingWriter(DatabaseTable table, CodeWriterSettings codeWriterSettings, MappingNamer mappingNamer) { if (table == null) throw new ArgumentNullException("table"); if (mappingNamer == null) throw new ArgumentNullException("mappingNamer"); _codeWriterSettings = codeWriterSettings; _mappingNamer = mappingNamer; _table = table; _cb = new ClassBuilder(); }
public CodeFirstMappingWriter(DatabaseTable table, CodeWriterSettings codeWriterSettings, MappingNamer mappingNamer) { if (table == null) { throw new ArgumentNullException("table"); } if (mappingNamer == null) { throw new ArgumentNullException("mappingNamer"); } _codeWriterSettings = codeWriterSettings; _mappingNamer = mappingNamer; _table = table; _cb = new ClassBuilder(); }