实体框架 - 未映射的实体。可能?

问题描述:

是否有可能创建一个未映射到数据库中的表的实体?实体框架 - 未映射的实体。可能?

我创建了一个包含5个属性(名称,电话号码,电子邮件,日期,评论)的实体(A)。我的数据库中没有名为A的表。

我使用LINQ和结果转换为类型(A)的列表

IList<A> results = new IList<A>(); 
results = (from m in B 
      where m.Id < 10 
      select new { m.name, m.email, m.date, m.phone, m.comment }).ToList(); 
return View(results) 

我这样做是从传递一个匿名类型我的看法,以防止查询在我的模型中的其它表。

+1

未映射的实体,有什么好处?那么为什么不创建一个类呢? – 2013-03-15 15:35:25

+0

上课吗?这是星期五我的大脑即将关闭。但为什么没有未映射的实体工作? – 2013-03-15 17:39:46

+0

有人告诉我,不是创建一个实体,我可以创建一个复杂类型 – 2013-03-15 19:09:36

首先,由于您将变量results分配给某个变量,因此不需要创建新列表。下面的工作:

IList<A> results;  // No value yet. 

然后你可以实例A就像你本来做。

results = (from m in B 
      where m.Id < 10 
      select new A(m.name, m.email, m.date, m.phone, m.comment)) 
      .ToList(); 

return View(results) 

但是,您的假设在这里是错误的。你说:我将结果转换为A类型的列表,以防止将匿名类型传递给我的视图,但您对匿名类型的想法不正确。

以下将不是创建一个匿名类型。这将创建一个非常unanonymous IEnumerable<A>IQueryable<A>

var results = from m in B 
       select new A(); 

但是,以下创建一个匿名类型:

var results = from m in B 
       select new { 
        Name = m.name, 
        Email = m.email, 
        Date = m.date, 
        Phone = m.phone, 
        Comment = m.comment 
       }; 
+0

我想你可以使用automapper来做到这一点。 – 2013-03-15 15:34:27

+0

我的代码是错误的。我输入了那个内存 – 2013-03-15 17:33:32