使用Entity Framework将数据保存到数据库并返回新插入的Id

时间:2012-09-27 11:32:22

标签: c# entity-framework

我有一个简单的方法,我使用实体框架将给定的客户信息保存到数据库中:

    public Customer AddCustomer(Customer customer)
    {
        using (var context = DataObjectFactory.CreateContext())
        {
            context.AddObject("CustomerEntities", Mapper.Map(customer));

            context.SaveChanges();

            return customer;
        }
    }

客户类型非常简单,它由Id和客户名称组成,因此当我们想要保存客户时,我只需将客户对象传递给AddCustomer方法,此时Id为null且Name字段包含我想要保存到数据库的名称。

这样工作正常,名称会被插入到数据库中,但是我想要做的是将已保存的客户ID返回并返回到调用函数,无论如何实现此目的?

编辑:

这是使用的Mapper方法:

internal static class Mapper
{
    internal static IList<Customer> Map(IEnumerable<CustomerEntity> entity)
    {
        return entity.Select(Map).ToList();
    }

    internal static Customer Map(CustomerEntity entity)
    {
        return new Customer
        {
            CustomerId = entity.CustomerId,
            Name = entity.Name
        };
    }

    internal static CustomerEntity Map(Customer customer)
    {
        return new CustomerEntity
        {
            CustomerId = customer.CustomerId,
            Name = customer.Name
        };
    }
}

由于

1 个答案:

答案 0 :(得分:2)

对Mapping部分有一点疑问,因为我们不知道Mapper.Map(customer)返回了什么......但我很确定它确实会返回一个新的实例......所以{{ 1}}不会被更改,因为您没有将customer.Id添加到上下文,但是customer

编辑:嗯,我的猜测是正确的(多么天才;))。那应该是

Mapper.Map(customer)