Конвертировать из строки в базу данных в логическое свойство Entity Framework 4.1 - PullRequest
3 голосов
/ 15 июля 2011

Я работаю над устаревшей базой данных Oracle, которая использует символические литералы T и F в базе данных для своих логических значений, однако я хотел бы, чтобы свойство Entity отражало правильное значение Boolen, если есть способ преобразовать это значение, когда модельпривязка это база данных только для чтения, поэтому вставки не важны

Ответы [ 2 ]

5 голосов
/ 15 июля 2011

Это невозможно.Вам нужно будет сопоставить строковое свойство со столбцом таблицы базы данных, а затем использовать не сопоставленное логическое свойство:

public string MyStringProperty { get; set; }

[NotMapped]
public bool MyBoolProperty
{ 
    get { return MyStringProperty == "T"; }
    set { MyStringProperty = value ? "T" : "F"; }
}
2 голосов
/ 15 июля 2011

Я бы предложил обернуть или расширить генерирующий тип, чтобы добавить такую ​​функциональность ...

Структура сущностей будет генерировать объекты, которые в основном соответствуют тому, как выглядят данные в таблицах базы данных, так что если у вас естьВ таблице с именем «Контакты» вы получите объект с именем «Контакты», я думаю (хотя я могу ошибаться) классы определены как частичные, поэтому он генерирует что-то вроде ...

public partial class Contact { 
  string BoolReally { 
    get; set;
  };
}

тогдадобавьте новое свойство, подобное этому ...

public partial class Contact { 
  bool MyBool get { 
    return (legacyValue == "T") ? true : false;
  }
}

Теперь, когда вы объявляете экземпляр Contact, просто выберите значение из "MyBool".

...

Это расширяет, завершение было бы что-то вроде этого ...

public class MyContact {
     public Contact Contact;
     public bool MyBool { 
         get { 
             return Contact.BoolAsString; 
         }
     }
}

аналогичная вещь ... просто нужно потреблять объект немного по-другому :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...