SubSonic 3 и MySQL, удаление подчеркивания из имени столбца в методе CleanUp () вызывает исключения при использовании свойства в linq-запросе
Я столкнулся с проблемой при использовании SubSonic 3 (.0.0.3) ActiveRecord с MySQL.
Так как MySQL не позволяет вам использовать заглавные буквы в именах таблиц или столбцов (или, скорее, игнорирует их, если вы это сделаете), я решил разделить слова, используя подчеркивание, например. entity_id, а затем используйте метод CleanUp (), чтобы добавить регистр заголовков и удалить подчеркивания.
Друг написал метод ToTitleCase (string s), который выглядит следующим образом:
string ToTitleCase(string s)
{
CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
TextInfo textInfo = cultureInfo.TextInfo;
return textInfo.ToTitleCase(s);
}
И метод CleanUp () выглядит так:
string CleanUp(string tableName){
string result=tableName;
//strip blanks
result=result.Replace(" ","");
//put your logic here...
result = ToTitleCase(result);
result = result.Replace("_", "");
return result;
}
Если я тогда сделаю:
var entity = Entity.All().Where(e => e.EntityName.Contains("John"));
Я получаю NotSupportedException с сообщением «Элемент EntityName не поддерживается».
Если я удалю
result = result.Replace("_", "");
Все работает просто отлично, только я получаю свойства, похожие на Entity_Id, что не совсем то, что я хочу.
Если кто-нибудь знает, почему это произошло, я бы хотел это услышать. Если это возможно исправить, даже лучше! Это не шоу-стоппер, но это немного раздражает.