Linq InsertOnSubmit, DeleteOnSubmit и обновление не работает
Я прочитал пару постов, связанных с тем, что InsertOnSubmit не работает, но ни один из них не решил мою проблему. Ниже мой код, я вставил запись вручную в мою таблицу BackupPlan, и когда я запускаю linq, выбираю запись из базы данных, и две новые записи, которые я пытался вставить ниже, возвращаются и отображаются в журнале, но когда я проверил в обозревателе серверов -> соединения данных -> таблица BackupPlan, там была только запись, которая была вставлена вручную, а не новые. Я также попытался обновить существующую запись и удалить безуспешно и без каких-либо исключений. Кроме того, я добавил Id столбца и установил в качестве первичного ключа в моей таблице BackupPlan, проверил db.GetChangeSet() и возвращает, что 2 оператора вставки находятся в состоянии ожидания, но db.SubmitChanges() выполняется после этого безуспешно. Есть идеи, что мне здесь не хватает???:(
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();
}
}
}
}
1 ответ
http://dean-o.blogspot.com/2010/03/mind-your-copy-to-output-directory.html
Вы создаете свою программу, она копирует файл базы данных в Bin/Debug, и вы пишете в эту копию.
В следующий раз, когда вы соберетесь, будет перезаписана база данных, в которую вы только что написали, новой копией. Измените это, чтобы не копировать.