Как получить функциональность сохранения и добавления для работы с EF4, когда мое ключевое поле должно быть уникальным, но я установил его во время веб-сессии? - PullRequest
1 голос
/ 16 июля 2011

Вот два важных бита. У меня есть taxpayerID, который приходит из профиля текущих пользователей, но затем я хочу переместить это значение из базы данных ASPNETDB в мою базу данных реальных транзакций, поэтому я знаю значение, но этот код не выполняется. Он будет вставлен в первый раз и завершится неудачей при каждом следующем сохранении,

{"Невозможно вставить повторяющееся значение в уникальный индекс. [Имя таблицы = dr405, Имя ограничения = PK_ dr405 _0000000000000072]"}

Я пытался удалить базу данных, чтобы очистить любую паутину, но это не помогло.

[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public String TaxPayerID { get; set; }
public DateTime CreateDate { get; set; }

public void Save(DR405DBContext context, dr405 obj) 
{
    if (obj.CreateDate == null)
    {
        obj.CreateDate = DateTime.Now;
    }
    obj.ModDate = DateTime.Now;

    context.Entry(obj).State = obj.TaxPayerID == null ? EntityState.Added : EntityState.Modified;
    obj.TaxPayerID = Tangible.Profiles.DR405Profile.CurrentUser.TaxPayerID;
    context.SaveChanges();
}

Ответы [ 3 ]

1 голос
/ 16 июля 2011

Вы проверили значение: Tangible.Profiles.DR405Profile.CurrentUser.TaxPayerID Поскольку вы сбросили TaxPayerId перед сохранением.ищет меня, что ошибка приходит отсюда.

1 голос
/ 16 июля 2011

Согласно тексту ошибки вы пытаетесь вставить элемент с существующим ключом Primiry в таблицу.
Проверьте свойство State вашего объекта.Кажется, это всегда EntityState.Added

0 голосов
/ 20 июля 2011

Я действительно ценю ответы каждого.Я решил проблему с помощью третьего примера в принятом ответе - хитрость. stackoverflow.com / questions / 5557829 /…

У меня были проблемы из-за общего недостатка знаний об EF4 и способах его отслеживания изменений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...