Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架添加具有相关对象的记录_C#_Asp.net_Entity Framework - Fatal编程技术网

C# 实体框架添加具有相关对象的记录

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

我们有以下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作为外键

在用户表中,我们有Firstname、Lastname和CustomerId字段,我们从用户处获取Firstname、Lastname和CustomerId(客户下拉列表)详细信息,使用从用户处获取的CustomerId创建客户对象,并将所有这些信息传递给
AddUser
方法,但是发生的情况是,用户被插入到数据库中,同时一个新的客户被插入到客户的表中(使用一个新的customerid),有什么方法可以阻止这种情况吗


谢谢

您需要将客户的
实体状态
设置为
未更改

差不多

 context.Entry<Customer>(customer).State = EntityState.Unchanged; 
(取决于您使用的上下文类型)

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