none
關於物件的資訊 insert到多個資料庫的交易問題 RRS feed

  • 問題

  • 各位大大好,

    我設計的類別如下:

    /// <summary>基本資訊</summary> public abstract class Info { public Nullable<int> SN { get; set; } public string Name { get; set; } public Nullable<DateTime> ManufactureDate { get; set; } } public interface IMaintain { int Insert(); } /// <summary>車子</summary> public class Car : Info, IMaintain { public Engine EngineInfo; public List<Tyre> TyreInfoList; public Car() { this.EngineInfo = new Engine(); this.TyreInfoList = new List<Tyre>(); } public int Insert() { string sql = "insert into car values..."; List<SqlParameter> paraList = new List<SqlParameter>(); return DbClass.Execute(sql, paraList); } } /// <summary>引擎</summary> public class Engine : Info, IMaintain { public Nullable<int> CarSN { get; set; } public Engine() { } public int Insert() { string sql = "insert into engine values..."; List<SqlParameter> paraList = new List<SqlParameter>(); return DbClass.Execute(sql, paraList); } } /// <summary>輪胎</summary> public class Tyre : Info, IMaintain { public Nullable<int> CarSN { get; set; } public Tyre() { } public int Insert() { string sql = "insert into tyre values..."; List<SqlParameter> paraList = new List<SqlParameter>(); return DbClass.Execute(sql, paraList); } } /// <summary>資料庫連線</summary> public class DbClass { public static DataTable Query(string sql, List<SqlParameter> paraList) { //... return new DataTable(); } public static int Execute(string sql, List<SqlParameter> paraList) { int pk = 0; //.... 目前交易 只有處理這塊.... return pk; } }


    我執行的程式碼:

    static void Main(string[] args)
            {
                Car car = new Car();
                int pk = 0;
    
                car.Name = "偽藍寶比基尼";
                car.ManufactureDate = new DateTime(2014, 1, 1);
    
                car.EngineInfo.Name = "V2引擎";
                car.EngineInfo.ManufactureDate = new DateTime(2014,1,1);
    
                car.TyreInfoList.Add(new Tyre(){ Name="右前輪胎", ManufactureDate=new DateTime(2014,1,1)});
                car.TyreInfoList.Add(new Tyre(){ Name="右後輪胎", ManufactureDate=new DateTime(2014,1,1)});
                car.TyreInfoList.Add(new Tyre(){ Name="左前輪胎", ManufactureDate=new DateTime(2014,1,1)});
                car.TyreInfoList.Add(new Tyre(){ Name="左後輪胎", ManufactureDate=new DateTime(2014,1,1)});
     
    
                /// 遇到的問題是 不知道如何在下面撰寫 SqlTransaction
                pk = car.Insert();
    
                car.EngineInfo.CarSN = pk;
                car.EngineInfo.Insert();
    
                foreach (var tyre in car.TyreInfoList)
                {
                    tyre.CarSN = pk;
                    tyre.Insert();
                }
            }

    我的問題是 我有一輛車子的資訊 車子裡有引擎、輪胎的資訊

    我新增的時候 怕說 某個部分 發生錯誤 所以需要用交易 來確保 全部的資訊有一次insert

    可是我卡在 我不知道如何在 目前的類別裡每個 Insert的方法 去加入交易 SqlTransaction

    可以給我一些建議嗎??

    2014年12月4日 上午 03:04

所有回覆