0

我们有以下 AddUser 方法,它使用 EF 向数据库添加新记录:

    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 作为外键。

在 USER 表中,我们有 Firstname、Lastname 和 CustomerId 字段,我们从用户那里获取 firstname、lastname 和 customerid(客户的下拉列表)详细信息,使用我们从用户那里获得的 customerid 创建 Customer 对象并将所有这些传递给AddUser方法,但是会发生什么情况是用户被插入到数据库中,并且新的客户也被插入到客户的表中(使用新的客户 ID),有什么办法可以阻止这种情况?

谢谢

4

1 回答 1

2

您需要将EntityStateCustomer 的 设置为Unchanged

就像是

 context.Entry<Customer>(customer).State = EntityState.Unchanged; 

或者

 context.ObjectStateManager.ChangeObjectState(userEntity.Customer, EntityState.Unchanged); 

(取决于您使用的上下文类型)

请参阅http://msdn.microsoft.com/en-us/data/jj592676.aspx

于 2012-09-28T09:53:17.190 回答