Синтаксис для вставки и обновления с SqlCe и EntityFramework - PullRequest
3 голосов
/ 08 января 2011
VS 2008, SqlCe 3.5

Я пытаюсь изучить EntityFramework, но не могу заставить работать базовую вставку и обновление.Когда я включаю базу данных SqlCe (.sdf), мастер создает файл Test.edmx / designer.vb.Из этого я создаю свой текстовый текст, как показано ниже.Имя таблицы - Пользователи.

Синтаксис моих классов сущностей немного отличается от примеров в Интернете.Это немного сбивает с толку, и я не знаю, почему это так.Ниже я показываю два разных метода вставки, каждый из которых дает исключения в строке .SaveChanges:

An error occurred while updating the entries. See the InnerException for details.

{"Сгенерированные сервером ключи и сгенерированные сервером значения не поддерживаются SQL Server Compact."}

Кроме того, метод обновления Я действительно понятия не имею, что писать в недостающей части .. Буду очень рад за помощь по этим вопросам ...

Public Sub Insert(ByVal user As Users)
    Dim ctx As New TestDBEntities1(connection)
    ctx.Users.Context.AddObject("Users", user)
    ctx.Users.Context.SaveChanges()
End Sub

Public Sub Insert(ByVal user As Users)
    Dim ctx As New TestDBEntities1(connection)

    ctx.AddToUsers(user)
    ctx.SaveChanges()
End Sub


Public Sub Update(ByVal user As Users)
    Dim ctx As New TestDBEntities1(connection)
    Dim q = (From n In ctx.Users Where n.Id = user.Id Select n).Single

    ' How to update ??

    ctx.SaveChanges()
End Sub

Ответы [ 2 ]

1 голос
/ 10 марта 2011

Ну, согласно этой статье Microsoft TechNet они говорят так:

При использовании Entity Framework, ключи объекта могут быть помечены как сервер генерироваться. Это позволяет базе данных генерировать значение для ключа на вставка или создание объекта. Кроме того, ноль или более свойств субъекта может быть помечен как сгенерированные сервером значения. Для большего информация, см. магазин создан Тема шаблона в Entity Framework документация.

SQL Server Compact не поддерживает сущности с генерируемыми сервером ключами или значения, когда он используется с сущностью Рамочная, хотя сущность Framework позволяет определять сущность типы сгенерированными сервером ключами или ценности. Операция манипулирования данными на объект, который сгенерирован сервером значения выдает «Не поддерживается» исключение.

Но у вас есть пара вариантов, вы можете использовать UNIQUEIDENTIFIER или вы можете сгенерировать свой собственный ключ типа bigint / int. Лучшим решением для этого было бы прочитать текущий идентификатор в этой таблице и увеличить его на 1

0 голосов
/ 29 июля 2012

Как комментарий выше; Это было исправлено в SQL CE 4.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...