1

エンティティフレームワークを使用して、指定された顧客情報をデータベースに保存する簡単な方法があります。

    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フィールドには名前Iが含まれています。データベースに保存したい。

これは正常に機能し、名前はデータベースに挿入されますが、保存した顧客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
        };
    }
}

ありがとう

4

1 に答える 1

2

何が返されるかわからないので、マッピングの部分に少し疑問がありMapper.Map(customer)ます...しかし、それが何かの新しいインスタンスを返すと確信しています...だからcustomer.Id、あなたがしないように変更されることはありません。 tcustomerコンテキストに追加しますが、Mapper.Map(customer)

編集:まあ、私の推測は正しかった(なんて天才;))。だからそれは

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

        context.SaveChanges();

        return customerEntity.Id;
    }
}
于 2012-09-27T11:38:37.190 に答える