c# - EntityState 修改后的 SaveChanges 不保存

标签 c# entity-framework-6

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 };
    }
}

关于c# - EntityState 修改后的 SaveChanges 不保存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35626970/

相关文章:

c# - 自定义 GroupBox 控件,其中包含其他控件

javascript - 如何在 javascript 中使用 asp.net session ?

c# - 将项目集合从列表框转换为通用列表

c# - 如何在类库项目中获取连接字符串

c# - 如何为 ASP MVC4 中的每个注册用户创建一个空白数据库?

c# - 如何首先在 Entity Framework 代码中设置身份主键的起始值?

c# - 如何针对不同的上下文使用事务?

c# - EntityFramework 按 linq 查询分组

c# - 在类库中使用 Automapper 进行 Ninject

c# - 使链接可点击,除非它们已经在使用 C#