
How to get the length of a LINQ to SQL class’s attribute?
The following code snippet will return the length of a DB field from a SQL to Linq class object. Pass the instance of the object and name of the DB field.
public static int GetLengthLimit(object obj, string field) { int dblenint = 0; // default value = we can't determine the length Type type = obj.GetType(); PropertyInfo prop = type.GetProperty(field, BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance); // Find the Linq 'Column' attribute // e.g. [Column(Storage="_FileName", DbType="NChar(256) NOT NULL", CanBeNull=false)] object[] info = prop.GetCustomAttributes(typeof(ColumnAttribute), true); // Assume there is just one if (info.Length == 1) { ColumnAttribute ca = (ColumnAttribute) info[0]; string dbtype = ca.DbType.ToUpper(); if (dbtype.StartsWith("CHAR") || dbtype.StartsWith("NCHAR") || dbtype.StartsWith("NVARCHAR") || dbtype.StartsWith("VARCHAR")) { int index1 = dbtype.IndexOf("("); int index2 = dbtype.IndexOf(")"); string dblen = dbtype.Substring(index1 + 1, index2 - index1 - 1); int.TryParse(dblen, out dblenint); } else if (dbtype.StartsWith("DATETIME")) { dblenint = 8; } } return dblenint; }
Healthcare software development, HL7 Interface, EMR/EHR integration, mHealth, HIPAA compliant