2014-01-29 3 views
1

Я столкнулся с проблемой при отправке изменений в таблицу с использованием кода linq, успешно выполненного им, не сохраняет изменения в таблице.Linq db.submitchanges() не работает

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

Некоторые говорят, использование интегрированной безопасности = верна, но она генерирует исключение недопустимый ключевое слово интегрированной безопасности

Вот моя строка соединения

<add name="POSConnectionString" connectionString="Persist Security Info=False; Data Source=|DataDirectory|\App_Data\POS.sdf; mode=Read Write;" 
    providerName="Microsoft.SqlServerCe.Client.4.0" /> 

Код для вставки данных в таблице

public bool InsertItem(Item item) 
{ 
    try 
    { 
     using (SqlCeConnection conn = new SqlCeConnection(connectionString)) 
     { 
      using (POSContext db = new POSContext(conn)) 
      {       
       db.Items.InsertOnSubmit(item); 
       db.SubmitChanges(); 
       return true; 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 

} 

Вот мой сценарий таблицы

CREATE TABLE [Item] (
    [ItemID] int IDENTITY (1,1) NOT NULL 
, [ItemName] nvarchar(100) NOT NULL 
, [ItemCode] nvarchar(100) NOT NULL 
, [Weight] int NOT NULL 
, [IsActive] bit NOT NULL 
, [Stock] int NULL 
, [UnitID] int NULL 
); 
GO 
ALTER TABLE [Item] ADD CONSTRAINT [PK_Item] PRIMARY KEY ([ItemID]); 
GO 

Я работаю в окна формируют разработки приложений базы данных SQL Server Compact базы данных 4,0 Visual Studio 2012

+0

Вы уверены, что вы проверяете правильную базу данных? –

+0

Я чертовски уверен. Я получаю значения из таблицы, полностью вставляю причину проблемы, и в моем проекте есть только одна база данных, так как я использую базу данных sql compact. –

+1

. Посмотрите в папку bin/debug для копии файла базы данных. – ErikEJ

ответ

1

Я получил решение пути изменения свойств базы данных, чтобы не копировать и она работает, как это делает копию базы данных в бен/отладке и сохранение изменений там

0

У вас есть столбец автоинкрементным (Идентичность) в таблице. Чтобы вставить данные с помощью Linq, у вас должен быть столбец Identity в качестве основного ключа в вашей таблице.

+0

yes i имеют первичный ключ и автоинкремент и столбцы первичного ключа. –

+0

Попробуйте удалить интегрированную security = true из строки подключения. Или создайте свое соединение, удалив текущее соединение и заменив строку подключения на новую. – tarzanbappa

+0

Пробовал, но не работал –

0

У меня была та же проблема. Итак, когда вы создаете свой проект, Visual Studio перезаписывает вашу базу данных и имеет значения dafault. Попробуйте запустить его из «bin/debug» в каталоге проекта. Надеюсь, это будет полезно.

Смежные вопросы