我开始使用实体框架并遇到了问题。
假设我的数据库中有 2 个表。一个名为 Agent 的表包含 ID 和密码,另一个名为 AgentDetail 的表包含有关 Agent 的更多信息。但是,每个代理记录可能没有对应的 AgentDetail 记录。
我有这两个类来代表这两个表:
public class Agent
{
public string AgentId { get; set; }
public string Password { get; set; }
public virtual AgentDetail AgentDetail { get; set; }
}
public class AgentDetail
{
public string AgentDetailId { get; set; }
public string AgentName { get; set; }
public string Postcode { get; set; }
}
使用 EF 我可以将数据添加到数据库中。当两个表中都有相应的记录时,我也可以检索数据。
var agents = from a in context.Agents
select a;
return View(agents.ToList());
但是,如果 AgentDetail 表中不存在该记录,则在呈现 AgentDetail 中的值时,我的视图中会出现 NullReferenceException。
现在这是完全可以预料的,因为没有 AgentDetail 记录。
我的问题是,当表中不存在记录时,如何让 EF 创建具有空值的 AgentDetail。
我可以在 LINQ 查询中添加一个空子对象吗 - 例如:
var agents = (from a in rb.Agents
select new
{
AgentId = a.AgentId,
Password = a.Password,
AgentDetail = a.AgentDetail == null ? new AgentDetail() : a.AgentDetail,
}).ToList();
(但是,当我收到以下消息时,上述内容不起作用:
无法在 LINQ to Entities 查询中构造实体或复杂类型“Models.AgentDetail”。)