C# 实体框架添加具有相关对象的记录
我们有以下AddUser方法,该方法使用EF将新记录添加到数据库中:C# 实体框架添加具有相关对象的记录,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我们有以下AddUser方法,该方法使用EF将新记录添加到数据库中: public User AddUser(User user) { using (var context = DataObjectFactory.CreateContext()) { var userEntity = Mapper.Map(user); context.AddObject("UserEntities", userEn
public User AddUser(User user)
{
using (var context = DataObjectFactory.CreateContext())
{
var userEntity = Mapper.Map(user);
context.AddObject("UserEntities", userEntity);
context.SaveChanges();
return Mapper.Map(userEntity);
}
}
我们的用户类型如下:
public class User
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Customer Customer { get; set; }
}
我们有一个Customer表和一个User表,在User表中,customerid作为外键
在用户表中,我们有Firstname、Lastname和CustomerId字段,我们从用户处获取Firstname、Lastname和CustomerId(客户下拉列表)详细信息,使用从用户处获取的CustomerId创建客户对象,并将所有这些信息传递给AddUser
方法,但是发生的情况是,用户被插入到数据库中,同时一个新的客户被插入到客户的表中(使用一个新的customerid),有什么方法可以阻止这种情况吗
谢谢您需要将客户的
实体状态
设置为未更改
差不多
context.Entry<Customer>(customer).State = EntityState.Unchanged;
(取决于您使用的上下文类型)
看
context.ObjectStateManager.ChangeObjectState(userEntity.Customer, EntityState.Unchanged);