PLINQO / LINQ-To-SQL - метод самосохранения созданного объекта?
Привет, я пытаюсь создать базовую модель данных / слой
Идея состоит в том, чтобы:
Task task = TaskRepository.GetTask (2);
task.Description = "Задача изменилась";
task.Save ();
Это возможно? Я пробовал код ниже
Примечание. Методы TaskRepository.GetTask() отсоединяют сущность Task.
Я ожидаю, что это сработает, есть идеи, почему это не так?
Спасибо
public partial class Task
{
// Place custom code here.
public void Save()
{
using (TinyTaskDataContext db = new TinyTaskDataContext { Log = Console.Out })
{
db.Task.Attach(this);
db.SubmitChanges();
}
}
#region Metadata
// For more information about how to use the metadata class visit:
// http://www.plinqo.com/metadata.ashx
[CodeSmith.Data.Audit.Audit]
internal class Metadata
{
// WARNING: Only attributes inside of this class will be preserved.
public int TaskId { get; set; }
[Required]
public string Name { get; set; }
[Now(EntityState.New)]
[CodeSmith.Data.Audit.NotAudited]
public System.DateTime DateCreated { get; set; }
}
#endregion
}
2 ответа
После некоторого чтения я понял, что неправильно внедряю шаблон Repository. Я должен был добавить метод Save в хранилище для удобства.
Однако на самом деле проблема, возникающая у меня в связи с передачей отключенного набора данных, была связана с оптимистичным параллелизмом. Задача Datacontext заключается в отслеживании состояния его сущностей. Когда сущности разъединяются, вы теряете это состояние.
Я обнаружил, что вам нужно добавить поле метки времени в таблицу базы данных, или я могу установить поле UpdateCheck для каждого столбца в моем файле dbml.
Вот некоторая информация о UpdateCheck
Несколько полезных ссылок о отключенных Linq и plinqo
Отличная информация о реализации шаблона Repository с помощью LINQ
Краткое руководство по внедрению для обновления и повторного подключения объектов
Нет необходимости в этой строке (Task task = new Task();). Вышеуказанное должно работать, хотя я никогда не видел, чтобы это реализовывалось таким образом. Вы думали об использовании менеджеров? Вы сталкиваетесь с какими-либо ошибками во время выполнения?
Спасибо -Блейк Немийски