Мы разделяем одно поко с
- ServiceStack WebServices
- ServiceStack Orm с MySQL
- Мобильный клиент Xamarin, использующий Sqlite.net.
Проблема в том, что общие классы превратились в беспорядок.
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
#if __MOBILE__
[Indexed]
#else
[Index]
#endif
public string UserAccountId { get; set; }
#if __MOBILE__
[Indexed]
#else
[Index]
#endif
И если это уже не так плохо, мне нужно
- Ограничьте длину каждого поля в базе данных ....
- Сохраните эти объекты в MongoDb. К счастью, у них есть класс AutoMapper, который делает это во время выполнения.
Не знаю, что делать. Мои неудачные идеи включают в себя:
Попробуйте использовать: [Conditional ("DEBUG")]. Но это ничего не делает для этого
Похоже, что sqlite.net использует свой собственный атрибут
[AttributeUsage (AttributeTargets.Property)] открытый класс IndexedAttribute: Attribute
Таким образом, он не найдет атрибут Mysql [Index]
Можно попробовать включить два атрибута в каждое свойство
[Индексировано] [Индексируется] общедоступная строка UserAccountId {get; набор; }
Я попытался превратить его в две однострочные, но С # VS жалуется
#if __MOBILE__ [Indexed] #endif #if __MOBILE__ [Index] #endif
В конце концов, единственный подход, при котором ** APPEARS ** будет работать, - это просто сохранить интерфейс как единственное определение класса и иметь много конкретных классов, которые будут декорированы по-разному.
Любые идеи??