我正在从逗号分隔值 (CSV) 文档中读取数据并将其内容保存到数据库中。CSV 文件中的每一行都包含以下列:
- 客户ID
- 纬度
- 经度
我们的领域模型如下:
Customer
有很多Locations
Location
- 纬度
- 经度
对于每一行,我正在阅读Customer ID
并在数据库中查找:
var customer = (from c in Context.Customer
where c.ID == id
select c).SingleOrDefault();
如果它不存在,我创建一个:
if (customer == null)
{
customer = new customers();
customer.ID = id;
}
我现在不保存它。接下来,我创建一个新的Location
,并设置它的客户。请注意,此客户实际上可能尚未在数据库中。
现在考虑以下情况:如果客户还没有在数据库中,我创建一个。但我还没有保存它。现在下一行属于我刚刚创建的同一个客户,它还没有在数据库中。因此,它将创造另一个客户。
当需要将图形保存到数据库时,它会尝试保存两个具有相同 ID 的不同客户并失败。
我怎样才能让实体框架也从它的上下文中进行选择,即使它可能还没有被持久化?