Linq к SQL: Почему я получаю ошибки IDENTITY_INSERT?

Чтобы решить эту проблему, вам нужно использовать запрос. Поэтому, пожалуйста, используйте следующие строки кода:

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 .

]

6
задан Gert Arnold 24 August 2013 в 15:57
поделиться

3 ответа

Ваш код устанавливает Значение идентификатора 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 ();}

7
ответ дан 8 December 2019 в 05:58
поделиться

При предоставлении значения столбца 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();

Я полагаю, что это будет работать, простить мне, если у меня будут классы неправильно. Вы получаете общее представление.

Править: Ой.. Извините, не считал весь вопрос, я забираю его, усталый и утомленный от работы...

1
ответ дан 8 December 2019 в 05:58
поделиться

кажется, что Ваш идентификатор присваивается где-нибудь (даже если бы, просто приняв значение по умолчанию к 0) - Вы заботились бы о регистрации части Вашего кода LINQ?

1
ответ дан 8 December 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: