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

Краткое руководство по внедрению для обновления и повторного подключения объектов

Ранее ответ на вопрос

Рик Штрал о LINQ to SQL и прикреплении сущностей

Нет необходимости в этой строке (Task task = new Task();). Вышеуказанное должно работать, хотя я никогда не видел, чтобы это реализовывалось таким образом. Вы думали об использовании менеджеров? Вы сталкиваетесь с какими-либо ошибками во время выполнения?

Спасибо -Блейк Немийски

Другие вопросы по тегам