Сериализуйте его в JSON для сохранения в базе данных и Deserialize для восстановления коллекции .NET. Кажется, что это работает лучше, чем я ожидал от него с Entity Framework 6 & amp; SQLite. Я знаю, что вы попросили List
, но вот пример еще более сложной коллекции, которая работает очень хорошо.
Я отметил сохраненное свойство с помощью [Obsolete]
, поэтому было бы очень очевидно, что «это не является тем свойством, которое вы ищете "в процессе обычной кодировки. Свойство «real» помечено значком [NotMapped]
, поэтому инфраструктура Entity игнорирует его.
(несвязанный тангенс): вы можете сделать то же самое с более сложными типами, но вам нужно спросить себя, вы просто попросили свойства объекта слишком сложны для вас? (да, в моем случае).
using Newtonsoft.Json;
....
[NotMapped]
public Dictionary MetaData { get; set; } = new Dictionary();
/// for database persistence.
[Obsolete("Only for Persistence by EntityFramework")]
public string MetaDataJsonForDb
{
get
{
return MetaData == null || !MetaData.Any()
? null
: JsonConvert.SerializeObject(MetaData);
}
set
{
if (string.IsNullOrWhiteSpace(value))
MetaData.Clear();
else
MetaData = JsonConvert.DeserializeObject>(value);
}
}
Относительно web.config проблемы развертывания: Scott Guthrie записал о здесь:
можно легко автоматизировать процесс конфигурации в среде сборки Visual Studio (и сделать настолько способом, который работает оба в IDE, а также со сборками командной строки/автоматизировать).
Текущая конфигурация с опубликовать инструментом отправит web.config в заключительный сайт, и насколько я знаю, что нет никакого пути вокруг этого.
Visual Studio 2010 собирается предложить способность предназначаться для конфигураций, позволяющих процесс развертывания выставить различную конфигурацию.
Что касается .dll ссылки, я верю единственному способу добраться, это для работы - то, если у Вас есть "Копия Локальный" набор к истинному на ссылке.