bernova Ответов: 0

Реализовать репозиторий с помощью ADO.NET и Линк


Я хочу реализовать операцию сохранения(вставка/обновление) следующим образом:

Эми п = новый пуп();
n.Srl=1;
n.Name = "Мэтью";
Н.Сохранить();

Я должен передать entity в качестве параметра для сохранения функции, и она работает правильно, но очень уродливо!!!... пример: n.Save(n)

класс моделей :

public class Emp :Classes.Repository<Emp>
   {
       private int srl;
       public int Srl
       {
           set { srl = value; }
           get { return srl; }
       }

       private string name;
       public string Name
       {
           set { name = value; }
           get { return name; }
       }

   }


public class Repository<T> : IRepository<T> where T : class
  {
      public SDataAccess Conn { get; private set; }
      public void Save(T entity)
      {
          if (entity == null)
          {
              throw new ArgumentNullException("entity", "Add to DB null entity");
          }
          //extention Methods
          var res = Conn.Save(entity);
      }

      public IEnumerable<T> GetAll()
      {
          throw new NotImplementedException();
      }



  }


Что я уже пробовал:

Я реализую функцию сохранения в библиотеке DAL следующим образом :

например :
ЭМП = новый пуп();
при вызове нового ключевого слова я вызываю функцию Insert else Update Function
и правильно бегать.

Maciej Los

Поскольку репозиторий-это тип Emp, вы можете использовать что-то вроде:

  public void Save()
  {
      if (this == null)
      {
          throw new NullReferenceException("Add to DB null entity");
      }
	  else
	  {
	  		Console.WriteLine("save action!");
	  }
  }

Но первый оператор if никогда не будет достигнут, если вы попытаетесь вызвать метод Save для неинициализированной переменной Emp. Вы получите исключение NullReference:

Emp m = null;
m.Save(); //here - NullReferenceException!


С другой стороны, Repository это должна быть коллекция (или список, или массив) сущностей.

Наконец, я бы настоятельно рекомендовал реализовать 2 различных метода для вставки и обновления.

0 Ответов