1

次のように、Customer と CustomerAddress の 2 つの POCO オブジェクトがあります。

public partial class Customer
    {
        public Customer()
        {
            this.CustomerAddresses = new HashSet<CustomerAddress>();
            this.Orders = new HashSet<Order>();
        }

        public int ID { get; set; }
        public string LastName { get; set; }
        public string FirstName { get; set; }
        public string MiddleName { get; set; }
        public System.DateTime DateOfBirth { get; set; }
        public byte Gender { get; set; }

        public virtual ICollection<CustomerAddress> CustomerAddresses { get; set; }
        public virtual ICollection<Order> Orders { get; set; }
    }

public partial class CustomerAddress
    {
        public int ID { get; set; }
        public int CustomerID { get; set; }
        public byte AddressType { get; set; }
        public string Street { get; set; }
        public string City { get; set; }
        public string State { get; set; }
        public string Country { get; set; }

        public virtual Customer Customer { get; set; }
    }

次のように新しい Customer オブジェクトを作成しています。

Customer cust = new Customer();
            cust.ID = 9;
            cust.LastName = "Ross";
            cust.FirstName = "Taylor";
            cust.DateOfBirth = DateTime.Now;
            cust.Gender = 0;

            CustomerAddress custAdd = new CustomerAddress();
            custAdd.ID = 9;
            custAdd.Customer = cust;
            custAdd.AddressType = 0;
            custAdd.Street = "1 Main Street";
            custAdd.City = "Princeton";
            custAdd.State = "CA";
            custAdd.Country = "USA";

            DbConnection MyContext = new DbConnection(); ;
            MyContext.Customers.Add(cust);
            MyContext.CustomerAddresses.Add(custAdd);
            MyContext.SaveChanges();

SQL プロファイラーを起動します。このデータが保存されると、データベースに対して 2 つの挿入スクリプトが実行されます。1 つは Customer 用、もう 1 つは CustomerAddress 用です。しかし、私の混乱は、SQL プロファイラーに BEGIN TRANSACTION ステートメントと COMMIT ステートメントが表示されないことです。何らかの理由で CustomerAddress の挿入スクリプトが失敗した場合、トランザクション全体を失敗させたいのですが、BEGIN TRANSACTION なしで取得できるかどうかわかりません。ここで私が間違っていることはありますか?

4

0 に答える 0