0

EFを使用してデータベースに新しいレコードを追加する次のAddUserメソッドがあります。

    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があります。

USERテーブルには、Firstname、Lastname、CustomerIdフィールドがあり、ユーザーから名、姓、customerid(顧客のドロップダウンリスト)の詳細を取得し、ユーザーから取得したcustomeridを使用してCustomerオブジェクトを作成し、これらすべてをAddUserメソッドですが、ユーザーがデータベースに挿入され、新しい顧客が(新しい顧客IDを使用して)顧客のテーブルに挿入されるとどうなりますか?これを停止する方法はありますか?

ありがとう

4

1 に答える 1

2

EntityStateCustomer の をに設定する必要がありますUnchanged

何かのようなもの

 context.Entry<Customer>(customer).State = EntityState.Unchanged; 

また

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

(使用しているコンテキストの種類によって異なります)

http://msdn.microsoft.com/en-us/data/jj592676.aspxを参照してください。

于 2012-09-28T09:53:17.190 に答える