我有一个表,其中一个成分是carID,在bTable中 有车名。 现在我有一个表ID。 在控制器中,默认方式是这样
public ActionResult Details(int? id)
{
var aObject= db.aTable.Find(id);
return View(aObject);
,然后我们使用aTable模型类生成“详细信息”视图。
但是在那种情况下,我将看到只显示汽车ID而不是名称的视图。 而且我想在查询aTable时加入bTable,并希望显示汽车名称文本。
为此,我必须创建新的模型类。我做完了但是如何使用实体框架通过联接执行单个对象查询并传输对象以进行查看?
a table is
int aID
string aName
int carID
b talbe is
int bID
string bcarName
public class ModifiedaTableModel
{
[Key]
[Required(ErrorMessage = "aIDis required.")]
public int aID{ get; set; }
[Required(ErrorMessage = "aName required.")]
public string aName{ get; set; }
[Required(ErrorMessage = "carName required.")]
public string carName{ get; set; }
}
答案 0 :(得分:1)
如果您的CarID
是bID
,请执行以下操作:
var modifiedATableModel = (from a in aTable
join b in bTable
on a.carID equals b.bID
select new ModifiedaTableModel
{
aID = a.aID,
aName = a.aName,
carName = b.bcarName
}).FirstOrDefault();
答案 1 :(得分:0)
查看本文linq101Samples
选择1
var query = db.aTable
.Join(db.bTable, r => r.aID,
p => p.bID,
(r,p) => new ModifiedaTableModel
{
aID = r.aID,
aName = r.aName,
carName = p.carName
}).SingleOrDefault();
答案 2 :(得分:0)
在这里,我考虑了aTable
和bTable
之间的成功满意的关系,并通过将两个表都连接在一起将查询结果投影到ModifiedaTableModel
。
public ActionResult Details(int? id)
{
ModifiedaTableModel model = new ModifiedaTableModel();
if (id != null)
{
model = (from a in db.aTable
join b in db.bTable on a.carID equals b.bID
where a.aID == id.Value
select new ModifiedaTableModel
{
aID = a.aID,
aName = a.aName,
carName = b.bcarName
}).SingleOrDefault();
return View(model);
}
return View(model);
}