db4o в .NET: свойства или поля?

Я начинаю с db4o в .NET 4.0. Должен ли я использовать поля или свойства для постоянных объектов?

Я понимаю, что для использования атрибута [Indexed] для уникальных идентификаторов мне нужно использовать поле. Как мне реализовать соответствующее свойство ID без дублирования данных в моей базе данных?


person Petrus Theron    schedule 11.03.2011    source источник


Ответы (1)


Используйте обычные свойства, как и любой другой объект. Держите свои поля приватными и получайте к ним доступ через свойства и методы. Это делает его более гибким, например, для переименования свойства.

db4o всегда сохраняет значения полей и игнорирует свойства. Вот почему вам нужно добавить индекс-атрибут в поле. Также конфигурационный материал всегда относится к полю. Когда вы добавляете свойство, db4o просто сохраняет базовое поле.

Единственное, что вы можете подумать, если хотите использовать автоматические свойства. Автоматические свойства C # поддерживаются полем, созданным компилятором. Это имя поля будет очень уродливым. Поэтому вы, вероятно, захотите использовать обычные свойства с обычным полем.

Примечание. Для Silverlight необходимо использовать общедоступные поля, поскольку db4o не может получить доступ к частным полям через отражение.

person Gamlor    schedule 11.03.2011
comment
+1 доступ к частному полю через отражение. Я ошибочно предположил, что db4o не может получить доступ к закрытым полям. Я в основном использую автоматические свойства для удобства, но я заметил уродливые поля, созданные компилятором. - person Petrus Theron; 12.03.2011