protected SqlQueryInfo CreateInsertSqlText(DbManager db, Type type, int nParameter) { TypeExtension typeExt = TypeExtension.GetTypeExtension(type, Extensions); ObjectMapper om = db.MappingSchema.GetObjectMapper(type); List <MemberMapper> list = new List <MemberMapper>(); StringBuilder sb = new StringBuilder(); SqlQueryInfo query = new SqlQueryInfo(om); MetadataProviderBase mp = MappingSchema.MetadataProvider; sb.Append("INSERT INTO "); AppendTableName(sb, db, type); sb.Append(" (\n"); foreach (MemberMapper mm in GetFieldList(om)) { // IT: This works incorrectly for complex mappers. // // [2009-03-24] ili: use mm.MemberAccessor instead of mm.ComplexMemberAccessor // as in CreateUpdateSqlText // bool isSet; if (mp.GetNonUpdatableAttribute(type, typeExt, mm.MapMemberInfo.MemberAccessor, out isSet) == null || !isSet) { sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryField)); list.Add(mm); } } sb.Remove(sb.Length - 2, 1); sb.Append(") VALUES (\n"); foreach (MemberMapper mm in list) { SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(mm.Name + "_P", ConvertType.NameToQueryParameter).ToString(), mm.Name); if (nParameter < 0) { sb.AppendFormat("\t{0},\n", p.ParameterName); } //sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(p.ParameterName, ConvertType.NameToQueryParameter)); else { sb.AppendFormat("\t{{{0}}},\n", nParameter++); } } sb.Remove(sb.Length - 2, 1); sb.Append(")"); query.QueryText = sb.ToString(); return(query); }
protected override MetadataProviderBase CreateMetadataProvider() { MetadataProviderBase provider = base.CreateMetadataProvider(); provider.AddProvider(new TestMapMetadataProvider()); return(provider); }
protected SqlQueryInfo CreateUpdateSqlText(DbManager db, Type type) { TypeExtension typeExt = TypeExtension.GetTypeExtension(type, Extensions); ObjectMapper om = db.MappingSchema.GetObjectMapper(type); StringBuilder sb = new StringBuilder(); SqlQueryInfo query = new SqlQueryInfo(om); MetadataProviderBase mp = MappingSchema.MetadataProvider; sb.AppendFormat("UPDATE\n\t{0}\nSET\n", db.DataProvider.Convert(GetTableName(type), ConvertType.NameToQueryTable)); foreach (MemberMapper mm in GetFieldList(om)) { bool isSet; if (!mp.GetNonUpdatableFlag(type, typeExt, mm.MemberAccessor, out isSet) || !isSet) { SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryParameter).ToString(), mm.Name); sb.AppendFormat("\t{0} = {1},\n", db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField), p.ParameterName); } } sb.Remove(sb.Length - 2, 1); AddWherePK(db, query, sb); query.QueryText = sb.ToString(); return(query); }
public void RelationAttributeTest3() { MappingSchema ms = Map.DefaultSchema; MetadataProviderBase mp = ms.MetadataProvider; bool isSet; List <MapRelationBase> relations = mp.GetRelations(ms, ms.Extensions, typeof(Detail), null, out isSet); Assert.That(relations.Count == 2); }
public void RelationAttributeTest2() { MappingSchema ms = Map.DefaultSchema; MetadataProviderBase mp = ms.MetadataProvider; bool isSet; List <MapRelationBase> relations = mp.GetRelations(ms, ms.Extensions, typeof(Master), typeof(Detail), out isSet); //sets[0] = new MapResultSet(typeof(Master), masters); //sets[1] = new MapResultSet(typeof(Detail), details); //sets[2] = new MapResultSet(typeof(SubDetail), subdetails); //sets[0].AddRelation(sets[1], "MasterId", "MasterId", "Details"); //sets[1].AddRelation(sets[0], "MasterId", "MasterId", "Master"); //sets[1].AddRelation(sets[2], "DetailId", "Id", "SubDetails"); //sets[2].AddRelation(sets[1], "Id", "DetailId", "Master"); Assert.That(isSet); Assert.That(relations.Count == 1); Assert.AreEqual("MasterId", relations[0].MasterIndex.Fields[0].Name); Assert.AreEqual("MasterId", relations[0].SlaveIndex.Fields[0].Name); Assert.AreEqual("Details", relations[0].ContainerName); relations = mp.GetRelations(ms, ms.Extensions, typeof(Detail), typeof(Master), out isSet); Assert.That(isSet); Assert.That(relations.Count == 1); Assert.AreEqual("MasterId", relations[0].MasterIndex.Fields[0].Name); Assert.AreEqual("MasterId", relations[0].SlaveIndex.Fields[0].Name); Assert.AreEqual("Master", relations[0].ContainerName); relations = mp.GetRelations(ms, ms.Extensions, typeof(Detail), typeof(SubDetail), out isSet); Assert.That(isSet); Assert.That(relations.Count == 1); Assert.AreEqual("Id", relations[0].MasterIndex.Fields[0].Name); Assert.AreEqual("DetailId", relations[0].SlaveIndex.Fields[0].Name); Assert.AreEqual("SubDetails", relations[0].ContainerName); relations = mp.GetRelations(ms, ms.Extensions, typeof(SubDetail), typeof(Detail), out isSet); Assert.That(isSet); Assert.That(relations.Count == 1); Assert.AreEqual("DetailId", relations[0].MasterIndex.Fields[0].Name); Assert.AreEqual("Id", relations[0].SlaveIndex.Fields[0].Name); Assert.AreEqual("Master", relations[0].ContainerName); }
protected SqlQueryInfo CreateInsertSqlText(DbManager db, Type type) { TypeExtension typeExt = TypeExtension.GetTypeExtension(type, Extensions); ObjectMapper om = db.MappingSchema.GetObjectMapper(type); List <MemberMapper> list = new List <MemberMapper>(); StringBuilder sb = new StringBuilder(); SqlQueryInfo query = new SqlQueryInfo(om); MetadataProviderBase mp = MappingSchema.MetadataProvider; sb.AppendFormat("INSERT INTO {0} (\n", db.DataProvider.Convert(GetTableName(type), ConvertType.NameToQueryTable)); foreach (MemberMapper mm in GetFieldList(om)) { // IT: This works incorrectly for complex mappers. // bool isSet; if (!mp.GetNonUpdatableFlag(type, typeExt, mm.ComplexMemberAccessor, out isSet) || !isSet) { sb.AppendFormat("\t{0},\n", db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryField)); list.Add(mm); } } sb.Remove(sb.Length - 2, 1); sb.Append(") VALUES (\n"); foreach (MemberMapper mm in list) { SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(mm.Name, ConvertType.NameToQueryParameter).ToString(), mm.Name); sb.AppendFormat("\t{0},\n", p.ParameterName); } sb.Remove(sb.Length - 2, 1); sb.Append(")"); query.QueryText = sb.ToString(); return(query); }
protected virtual MetadataProviderBase CreateMetadataProvider() { return(MetadataProviderBase.CreateProvider()); }
static void MapMetadataProvider_OnCreateProvider(MetadataProviderBase parentProvider) { parentProvider.AddProvider(new CustomMetadataProvider()); }
protected SqlQueryInfo CreateUpdateSqlText(DbManager db, Type type, int nParameter) { TypeExtension typeExt = TypeExtension.GetTypeExtension(type, Extensions); ObjectMapper om = db.MappingSchema.GetObjectMapper(type); StringBuilder sb = new StringBuilder(); SqlQueryInfo query = new SqlQueryInfo(om); MetadataProviderBase mp = MappingSchema.MetadataProvider; sb.Append("UPDATE\n\t"); AppendTableName(sb, db, type); sb.Append("\nSET\n"); MemberMapper[] fields = GetFieldList(om); bool hasFields = false; foreach (MemberMapper mm in fields) { bool isSet; if (mp.GetNonUpdatableAttribute(type, typeExt, mm.MapMemberInfo.MemberAccessor, out isSet) != null && isSet) { continue; } mp.GetPrimaryKeyOrder(type, typeExt, mm.MapMemberInfo.MemberAccessor, out isSet); if (isSet) { continue; } hasFields = true; SqlQueryParameterInfo p = query.AddParameter( db.DataProvider.Convert(mm.Name + "_P", ConvertType.NameToQueryParameter).ToString(), mm.Name); sb.AppendFormat("\t{0} = ", db.DataProvider.Convert(p.FieldName, ConvertType.NameToQueryField)); if (nParameter < 0) { sb.AppendFormat("{0},\n", p.ParameterName); } else { sb.AppendFormat("\t{{{0}}},\n", nParameter++); } } if (!hasFields) { throw new DataAccessException( string.Format("There are no fields to update in the type '{0}'.", query.ObjectType.FullName)); } sb.Remove(sb.Length - 2, 1); AddWherePK(db, query, sb, nParameter); query.QueryText = sb.ToString(); return(query); }