2013-04-07 2 views
1

Я прочитал пару сообщений, связанных с InsertOnSubmit, не работает, но ни одна из них не разрешает мою проблему. Ниже мой код, я вставляю вручную запись в мою таблицу BackupPlan, и когда я запускаю linq, выберите запись из базы данных и две новые записи, которые я попытался вставить ниже, возвращенные и отображаемые в журнале, но когда я проверил в проводнике сервера - > соединения данных -> таблица BackupPlan была только запись, которая была вставлена ​​вручную, а не новые. Я также попытался обновить существующую запись и удалить без каких-либо успехов и без каких-либо исключений. Кроме того, я добавил идентификатор столбца и задал в качестве первичного ключа мою таблицу BackupPlan, проверил db.GetChangeSet() и вернул, что 2 вставных оператора ожидаются, но db.SubmitChanges() запускается без успеха. Любая идея, что я здесь отсутствует? ??? :(Linq InsertOnSubmit, DeleteOnSubmit и обновление не работает

using System.Data.Linq.Mapping; 

namespace Storage.Models 
{ 
    [Table(Name = "BackupPlan")] 
    public class BackupPlan 
    { 
     [Column(IsPrimaryKey = true, IsDbGenerated = true)] 
     public int Id; 

     [Column] 
     public string Name; 

     [Column] 
     public string Description; 
    } 
} 

using System.Data.Linq; 
using Storage.Models; 

namespace Storage 
{ 
    public partial class Repository : DataContext 
    { 
     public Table<BackupPlan> BackupPlans; 
     public Repository(string connection):base(connection){} 
    } 
} 

using System; 
using System.Data.Linq; 
using System.Linq; 
using Storage.Models; 
using Storage.Properties; 

namespace Storage 
{ 
    class Test 
    { 
     static void Main(string[] args) 
     { 
      try 
      {     
       var settings = new Settings(); 
       var db = new Repository(settings.DatabaseConnectionString) 
          {Log = Console.Out, ObjectTrackingEnabled = true};     


       var backupPlan1 = new BackupPlan() {Description = "This is my first backup plan!", Name = "B Plan"};     
       db.BackupPlans.InsertOnSubmit(backupPlan1);     

       var backupPlan2 = new BackupPlan() {Description = "This is my first backup plan 2!", Name = "B22 Plan"}; 
       db.BackupPlans.InsertOnSubmit(backupPlan2); 

       var t = db.GetChangeSet(); //shows that 2 inserts are pending 

       db.SubmitChanges(); // when i run this method i check my table but there are no any new records       

       var q = from b in db.BackupPlans 
         select b; 
       foreach (var backupPlan in q) 
       { 
        Console.WriteLine("\n{0}", backupPlan.Name); 
       } 
       Console.ReadKey();    
      } 
      catch(Exception e) 
      { 
       Console.WriteLine(e.Message); 
       Console.ReadKey(); 
      } 
     } 
    } 
} 
+0

Есть ли какие-либо исключения? –

+0

Вот мой файл конфигурации со строкой соединения <конфигурация> <добавить имя = "Storage.Properties.Settings.DatabaseConnectionString" ConnectionString = "Источник данных = | DataDirectory | \ Database.sdf" ProviderName = "Microsoft.SqlServerCe. Клиент.3.5 "/> user2254602

+0

Для такого основного вопроса я ожидал бы, что кто-то может помочь, но :( – user2254602

ответ

0

http://dean-o.blogspot.com/2010/03/mind-your-copy-to-output-directory.html

Вы создаете свою программу, он копирует файл базы данных Bin/Debug и писать на эту копию.

В следующий раз вы строите, это будет перезаписывать база данных, которую вы только что написали, со следующей копией:

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