protected ORMTypeMapping FetchTypeMap(IRelatable relatee) { //Logger.Write("Testing"); //LogWriter.gger.Writer.SystemTrace.MethodStart( MethodBase.GetCurrentMethod() ); Type t = relatee.GetType(); Assembly sourceAssembly = t.Assembly; string resourceName = t.Namespace + ".ORM.xml"; XmlDocument xDoc = new XmlDocument(); StreamReader xmlRaw = new StreamReader(sourceAssembly.GetManifestResourceStream(resourceName)); // StreamReader xmlRaw = new StreamReader((esourceName); xDoc.Load(xmlRaw); string query = "//type[@fullname='" + t.FullName + "']"; XmlNode typeMapNode = xDoc.DocumentElement.SelectSingleNode(query); if (typeMapNode != null) { ORMTypeMapping typeMap = new ORMTypeMapping(typeMapNode); return(typeMap); } else { // SystemTrace.TraceError("Failed to load type map for {0}", t.FullName); // ExceptionPolicy.HandleException( new NullReferenceException("Unable to fetch type map for " + t.FullName), "Exception" ); string debug = "Unable to fetch type map for " + t.FullName; } return(null); }
private void AssignOutputValuesToObject(SqlCommand cmd, IRelatable relatee, ORMTypeMapping typeMap, string relationKey) { // Logger.Write( MethodBase.GetCurrentMethod() ); ORMCommandMap ocm = typeMap.GetMapByName(relationKey); foreach (object ob in ocm.PropertyMaps) { ORMPropertyMap propMap = (ORMPropertyMap)ob; if ((propMap.DataDirection == ParameterDirection.Output) || (propMap.DataDirection == ParameterDirection.InputOutput)) { PropertyInfo prop; Type t = relatee.GetType(); prop = t.GetProperty(propMap.MemberName); if (prop != null) { if (cmd.Parameters[propMap.Parameter].Value != DBNull.Value) { prop.SetValue(relatee, cmd.Parameters[propMap.Parameter].Value, null); } } else { // ExceptionPolicy.HandleException( new NullReferenceException(("Missing member " + t.FullName + "." + propMap.MemberName)), "Exception" ); } } } }
private void SetParameterValue(SqlParameter param, IRelatable relatee, string member) { //Logger.Write( MethodBase.GetCurrentMethod() ); PropertyInfo propInfo; Type t = relatee.GetType(); propInfo = t.GetProperty(member); if (propInfo != null) { param.Value = propInfo.GetValue(relatee, null); } else { //Logger.Write("Read failed on member {0} on type {1}", "pos exception"); } }