是否可以创建未映射到数据库中表的实体?
我创建了一个包含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)
我这样做是为了防止将匿名类型传递给我的视图。
答案 0 :(得分:1)
首先,由于您要为变量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
的列表,以防止将匿名类型传递给我的视图,但你对匿名类型的想法是不正确的。
以下不创建匿名类型。它会创建一个非常匿名的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
};