在构造函数EF 4.1中加载对象

时间:2011-06-20 12:12:21

标签: entity-framework-4.1

示例对象......

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);
}

如果你看一下需要传入Id的Public Ball构造函数,有没有办法将返回的对象映射到这个类?没有我手动分配属性......或者我必须使用静态加载方法吗?

干杯, d

1 个答案:

答案 0 :(得分:1)

不,你不能将它映射到构造实例(EF必须创建实例本身,所以你总是以两个实例结束),除非你手动将每个值分配给返回的实例到当前实例,但无论如何这是错误的实现,因为构造函数应该是哑的它不应该像数据库查询那样执行任何繁重的操作。