PLINQO / LINQ-To-SQL - метод самосохранения сгенерированного объекта? - PullRequest
0 голосов
/ 07 сентября 2010

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

Идея состоит в том, чтобы:

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 ]

1 голос
/ 08 сентября 2010

Прочитав немного, я понял, что неправильно внедрил шаблон Repository. Я должен был добавить метод Save в хранилище для удобства.

Однако на самом деле проблема, с которой я столкнулся при передаче отключенного набора данных, была связана с оптимистичным параллелизмом. Задача Datacontext заключается в отслеживании состояния его сущностей. Когда сущности отключаются, вы теряете это состояние.

Я обнаружил, что вам нужно добавить поле метки времени в таблицу базы данных, или я могу установить поле UpdateCheck для каждого столбца в моем файле dbml.

Вот некоторая информация о UpdateCheck

Несколько полезных ссылок об отключенных Linq и plinqo

Отличная информация о реализации шаблона Repository с помощью LINQ

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

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

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

0 голосов
/ 08 сентября 2010

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

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

...