1

我必须关注问题。我有大量的 XML 文件。在每个 XML 文件中都有不同的员工。我必须将唯一的员工添加到数据库中。在数据库中,每个员工都有名字、姓氏和出生日期。我想检查数据库中是否已经存在具有相同属性的员工,如果没有插入它。

我正在使用以下代码:

Entities entities;
entities.AddToEmployee(emp);
entities.SaveChanges();

我的员工连接到另一个数据结构 - 销售。所以我只需要将员工的主键添加到销售表中,而不是数据库中的整个员工(如果它已经存在)。

提前致谢!

4

2 回答 2

1

“查找或添加模式”在以下类型的情况下很有用:

var db = new YourContext();
var emp = db.Employees.Find(empID) ?? db.Employees.Add( new Employee { FirstName ="xx" , LastName="xxx"});
db.SaveChanges();

这样,如果 emp 对象存在于数据库中或已创建并保存到数据库中,则它已被加载。如果您搜索多个属性,您可能需要将 Find() 替换为 Where()。

于 2012-05-19T08:58:47.010 回答
0

在实体框架中,您可以通过多种方式创建和修改关系。在您的情况下,我将首先搜索一名员工,如果它存在,我将只设置 ForeingKey 而不是这样的导航属性

sale.EmployeeID = x; // id of existing employee

如果员工是新员工,则必须创建一个新的员工对象,然后从销售对象中引用它,然后保存它。

如果您收到“...无法将附加到 ObjectContext 的对象添加到 EntityCollection...”错误,请确保您只打开了一个上下文。我更喜欢像这样包装我的所有数据库操作

using(var dbContext = new MyContext())
{
//do persistence stuff
}
于 2012-05-19T12:07:50.757 回答