实体状态修改保存更改不保存

本文关键字:保存 保存更改 修改 状态 实体 | 更新日期: 2023-09-27 18:36:07

public static Result SaveCutomer(Customer customer)
{
    using (AshdorEntities context = new AshdorEntities())
    {
        try
        {
            Contact con = null;
            if (customer.customerId == 0)//new customer
            {
                customer.enterDate = DateTime.Now;
                customer.Contact.dateEnter = customer.enterDate;
                con = context.Contact.Add(customer.Contact);
                customer.Contact = con;
                customer.customerId = con.contactId;
            }
            else
                context.Customer.Attach(customer);
            context.Entry(customer).State = con != null ?
                         EntityState.Added :
                         EntityState.Modified;
            context.SaveChanges();
        }
        catch 
        {
            return new Result() { status = false, massege = MassegesResult.ADDING_FAILED };
        }
        return new Result() { status = true, massege = MassegesResult.ADDING_SUCCESSFUL };
    }
}

实体状态修改保存更改不保存

这不是一个可行的解决方案...而是试图通过指出不能很好地流动的部分来提供帮助......

public static Result SaveCutomer(Customer customer)
{
    using (AshdorEntities context = new AshdorEntities())
    {
        try
        {
            //assumption is that its always a disconnected entity if not you will need to check
            context.Customer.Attach(customer);
            //this seems wrong as well
            Contact con = null;
            customer.enterDate = DateTime.Now;
            //this seems wrong as well
            customer.Contact.dateEnter = customer.enterDate;
            //this seems wrong as well
            con = context.Contact.Add(customer.Contact);
            customer.Contact = null;
            //this seems wrong as well
            customer.customerId = con.contactId;
            if (customer.customerId == 0)//new customer
            {
                context.Entry(customer).State = EntityState.Added 
            }
            else //existing 
            {
                context.Entry(customer).State = EntityState.Modified; 
            }
            context.SaveChanges();
        }
        catch 
        {
            return new Result() { status = false, massege = MassegesResult.ADDING_FAILED };
        }
        return new Result() { status = true, massege = MassegesResult.ADDING_SUCCESSFUL };
    }
}