0

以下のコードとかなり混乱しています。

私は以下のようなクラスを持っています

public class Counter
{       
    public Double NormalCounter { get; set; }
    public Double SATCounter { get; set; }
    public Double SUNCounter { get; set; }
   
}

私のメインクラスでは、カウンターを埋めるために計算を行う方法があります

Counter CountHrs = GetBookedHours(resourceBkg, PrevEvent);
var lstExpResult = new List<string> {CountHrs.NormalCounter.ToString(),
                                     CountHrs.SATCounter.ToString(), 
                                     CountHrs.SUNCounter.ToString()};
UpdateBooking(bookingSesid, lstExpResult);

カウンターに以下のような値があると仮定してください

ノーマルカウンター=4

SATCounter=10

SUNCounter=6

文字列リストに追加してデータベースを更新しようとしています。それは正しい方法ですか? または私が持っている他のオプションをお願いします。

明確なアイデアを得るために、私の更新予約方法を以下に示します。

 public static bool UpdateBooking(string BookingSesid,List<string>HoursByRate)
    {
         SchedwinEntities db = new SchedwinEntities();
         string value = string.Empty;
         for (int i = 0; i < 5; i++)
         {
             string str = " ";
             if (i < HoursByRate.Count())
             {
                 str = HoursByRate[i];
                 value += str + ((char)13).ToString() + ((char)10).ToString();
             }
         }
            var query = 
            from SEVTs in db.SEVTs
            where
            SEVTs.SESID.Trim() == BookingSesid//SESID
            select SEVTs;
        foreach (var SEVTs in query)
        {
            SEVTs.USER3 = value;//value
        }
        try
        {
            db.SaveChanges();
            return true;
        }
        catch (UpdateException ex)
        {
            return false;
        }
    }
4

2 に答える 2

3

を表す文字列のリストを渡すのではなくdouble、次のように、キーと値のペアのリストを渡し、それらからパラメーター化されたステートメントを作成し、キーと値のペアのリストを使用してパラメーター値をバインドする必要があります。

class SqlParamBinding {
    string Name {get;set;}
    object Value {get;set;} 
}
var lstExpResult = new List<SqlParamBinding> {
    new SqlParamBinding { Name = "NormalCounter", Value = CountHrs.NormalCounter}
,   new SqlParamBinding { Name = "SATCounter", Value = CountHrs.SATCounter}
,   new SqlParamBinding { Name = "SUNCounter", Value = CountHrs.SUNCounter}
};
UpdateBooking(bookingSesid, lstExpResult);

lstExpResult名前を値から分離したので、UpdateBookingコードは SQL 式を次のようにフォーマットできます。

WHERE NormalCounter=@NormalCounter AND SATCounter=@SATCounter AND ...

@NormalCounter次に、 、@SATCounter、および@SUNCounterをリストで渡された値にバインドしlstExpResultます。

于 2013-03-22T00:39:50.243 に答える
0

Counterクラスのリストを作成する場合は、Listの代わりにListを使用します。更新されているか、データベースに送信されている可能性のある多数のCounterオブジェクトがあるようです。

    Counter c = new Counter();
    c. NormalCounter = 4
    c.SATCounter = 10
    c.SunCounter = 10

    List<Counter> listCounter = new List<Counter>
    listCounter.Add(c);

コードはより保守しやすく、読みやすくなっています。

一度に1つのオブジェクトを送信する場合は、リストはまったく必要ありません。カウンターオブジェクトをUpdateMethodに渡して、データベースの更新中に解析できます。

于 2013-03-22T00:46:38.783 に答える