эта функция сохранения LINQ приемлема? (чтобы иметь общую логику INSERT / UPDATE, как это?) ищет обратную связь - PullRequest
0 голосов
/ 22 февраля 2010

Я новичок в WPF и действительно борюсь с 'правильным способом' делать вещи ...

public void Save(CompanyContact entityToSave)
{
  try
  {

    var saveEntity = (from cc in db.CompanyContacts
        where cc.CompanyContactId == entityToSave.CompanyContactId
        select cc).SingleOrDefault();

    if (saveEntity == null)
    {
      //INSERT logic                    
      entityToSave.CreatedById = new CompanyPersonRepository().GetCompanyPerson(DataContext.Default.LoginUsername).CompanyPersonId;
      entityToSave.ModifiedById = entityToSave.CreatedById;

      db.CompanyContacts.InsertOnSubmit(entityToSave);
      db.CompanyContacts.Context.SubmitChanges();
    }
    else
    {
      //UPDATE logic            
      saveEntity.ModifiedById = new CompanyPersonRepository().GetCompanyPerson(DataContext.Default.LoginUsername).CompanyPersonId;
      saveEntity.CompanyId = entityToSave.Company.CompanyId;
      saveEntity.FirstName = entityToSave.FirstName;
      saveEntity.LastName = entityToSave.LastName;
      saveEntity.CompanyContactTypeId = entityToSave.CompanyContactTypeId;

      db.CompanyContacts.Context.SubmitChanges();

    }

...

если нет, можете ли вы дать некоторые комментарии о том, почему это не так, или привести пример лучшего способа написания функций LINQ, если я не на правильном пути ??

1 Ответ

0 голосов
/ 22 февраля 2010

Это будет работать; Вы также можете сохранить запись в форме как переменную, и если она равна нулю, запись не существует, но если это так, обновление должно произойти. Таким образом, вы можете минимизировать свои запросы и просто назначать значения формы одному объекту, а не иметь дело с двумя.

В качестве альтернативы, если вы связываете объект LINQ с формой, поскольку он реализует INotifyPropertyChanged, любые изменения немедленно привязываются к объекту, если вы устанавливаете привязки внутри формы и назначаете объект как текст данных.

НТН.

...