Не уверен, где автоматически сгенерировать первичные ключи в комнате - PullRequest
0 голосов
/ 28 мая 2020

Я новичок в разработке Android, и я пытаюсь написать демонстрационное приложение Notes, следуя архитектуре приложения этого примера от Google .

Согласно примеру, ViewModel должен иметь доступ к модели, определенной в пакете domain , т.е. ViewModel не должен знать, на что похожа модель, из API или базы данных. (По крайней мере, это то, что я понял из учебника)

Итак, в моем приложении Note у меня есть класс данных в пакете домена и пакете базы данных. (которые по сути одинаковы)

data class Note (
    val id: Long,
    val title: String,
    val body: String
)
@Entity(tableName = "notes_table")
data class DatabaseNote constructor(
    @PrimaryKey(autoGenerate = true)
    var id: Long = 0L,
    var title: String = "TITLE",
    var body: String = "BODY"
)

Чтобы создать новую заметку в ViewModel, мне нужно создать новый объект Note, где требуется идентификатор! Мой вопрос: должен ли я просто создать объект DatabaseNote из ViewModel, чтобы я мог автоматически сгенерировать идентификатор? В таком случае в чем смысл модели предметной области?

Заранее спасибо!

1 Ответ

0 голосов
/ 28 мая 2020

Сделать идентификатор обнуляемым

data class Note (
    val id: Long?,
    val title: String,
    val body: String
)

база данных создаст его для вас, если идентификатор не указан

...