Загрузка объекта в конструктор EF 4.1 - PullRequest
0 голосов
/ 20 июня 2011

Пример объекта ...

public class Ball
{
   public int Id { get; set; }
   public String Name { get; set; }

   public Ball()
   {

   }

   public Ball(int id)
   {
      using (var ctx = new MyContext())
      {
          var theBall = (from b in ctx.Balls
                         where b.Id == id
                         select b).SingleOrDefault();

          //How do i now map this to 'this'?
      }
   }

   public static Ball Load(int id)
   {
      using (var ctx = new MyContext())
      {
          return (from b in ctx.Balls
                  where b.Id == id
                  select b).SingleOrDefault();
      }
   }
}

public void Main()
{
    //Not preferred
    Ball firstBall = Ball.Load(1);

    //Preferred
    Ball secondBall = new Ball(1);
}

Если вы загляните внутрь конструктора Public Ball, которому требуется передать Id, есть ли способ сопоставить возвращенный объект этому классу?Без меня, выполняющего ручное назначение свойств ... или я должен использовать метод статической нагрузки?

Cheers, D

1 Ответ

1 голос
/ 20 июня 2011

Нет, вы не можете сопоставить его с созданным экземпляром (EF должен создать сам экземпляр, так что вы всегда будете заканчиваться двумя экземплярами), если только вы вручную не назначите каждое значение, например, из возвращенного экземпляра в текущий экземпляр, но в любом случае это неправильная реализация, потому что конструктор должен быть тупыми он не должен выполнять никаких тяжелых операций, таких как запросы к базе данных.

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