Чтобы решить эту проблему, вам нужно использовать запрос. Поэтому, пожалуйста, используйте следующие строки кода:
DatabaseReference messageRef = mRootRef.child("messages").child(mCurrentUserId).child(mChatUser);
Query query = messageRef.orderByChild("seen").equalTo(false);
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
ds.child("seen").getRef().setValue(true);
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
query.addListenerForSingleValueEvent(valueEventListener);
Результатом будет изменение вашего свойства seen
с false
на true
.
Если в какой-то момент вы также попытаетесь использовать Cloud Firestore , здесь вы можете найти учебное пособие о том, как создать полноценное и функциональное приложение Firestore Chat с использованием Kotlin .
]
Ваш код устанавливает Значение идентификатора explicitely на 0? (вместо того, чтобы оставить это нетронутым).
Обновление 1: Когда Вы отправили на обновленной версии, linq2sql ясно передает значение дб. Вот тот, из-за которого я не испытал затруднений:
[Column(Storage="_CustomerID", AutoSync=AutoSync.Always, DbType="Int NOT NULL IDENTITY", IsDbGenerated=true)]
public int CustomerID
Я просто видел другой, и это имеет то же точное определение того, которое Вы используете.
[Column(Storage="_TestID", AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", IsPrimaryKey=true, IsDbGenerated=true)]
public int TestID
Обновление 2: Относительно обновлений Вы, как предполагается, не делаете InsertOnSubmit для этого. Просто обновите значения и звоните.SubmitChanges (должен выдавать исключение). На вставке это действительно странно, поскольку свойство приписывает Вас отправленный, кажется, корректен, таким образом, метод Вставки linq2sql генерирует, должно быть корректным также. Я попробовал бы, повторно добавив таблицу на разработчике снова и проверив, что все свойства корректны.
Обратите внимание, что сгенерированный метод вставки должен быть похожим (с matchingRig_Insert):
private void InsertRig(Rig obj)
{
System.Nullable<int> p1 = obj.Id;
это. Rig_Insert (/* набор значений */, касательно p1); obj. Идентификатор = p1. GetValueOrDefault ();}
При предоставлении значения столбца IDENTITY необходимо добавить
SET IDENTITY_INSERT ON
перед Вашими SQL-операторами, и
SET IDENTITY_INSERT OFF
после для выключения его. Это идет для ЛЮБОГО необработанного SQL. Если Вы использовали LINQ для создания объекта как:
var customer = new LinqContext.Customer;
customer.FirstName = "Bob";
customer.LastName = "Smith";
LinqContent.Customer.Add(customer);
LinqContext.SubmitChanges();
Я полагаю, что это будет работать, простить мне, если у меня будут классы неправильно. Вы получаете общее представление.
Править: Ой.. Извините, не считал весь вопрос, я забираю его, усталый и утомленный от работы...
кажется, что Ваш идентификатор присваивается где-нибудь (даже если бы, просто приняв значение по умолчанию к 0) - Вы заботились бы о регистрации части Вашего кода LINQ?