3

次のように、Linq to sql を使用して DB テーブルにレコードのリストを挿入しています。

//my DataContext Class
 using (VTMMedicalDBDataContext objVTMMedicalDBDataContext = new VTMMedicalDBDataContext())
 {
     ReadOnlyCollection<TimeZoneInfo> objTimeZones = null;

     objTimeZones = TimeZoneInfo.GetSystemTimeZones();

     if (objTimeZones.Count > 0)
     {
         //List<TimeZoneMaster> listTimeZones = new List<TimeZoneMaster>();
         TimeZoneMaster objTimeZoneMaster = new TimeZoneMaster();

         foreach (var timezone in objTimeZones.ToList())
         {

             objTimeZoneMaster.TimeZoneName = timezone.DisplayName;

             var localName = timezone.DisplayName;

             objTimeZoneMaster.TimeZoneOffsetInMinutes = Convert.ToInt32(timezone.BaseUtcOffset.TotalMinutes);                      


             objVTMMedicalDBDataContext.TimeZoneMasters.InsertOnSubmit(objTimeZoneMaster);
             objVTMMedicalDBDataContext.SubmitChanges();


         }

     }
}   

私は主キーを持っていますが、DBML Nullable で false として AutoGeneratd として既に作成しています。それでも、それを取り除くことはできません...何らかの方法を提案してください。

4

5 に答える 5

9

最後に、多くの手間をかけた後、新しいコンセプトで答えを得ました..

同様の問題に直面しているすべての人にとって、明確な解決策があります。

同じレコードが更新されず、オブジェクト別のメモリ位置 (ローカル インスタンスがループ内でのみ破棄されるため..) *

于 2012-12-03T14:35:46.130 に答える
3

私は主キーを持っていますが、DBMLでtrueとして自動生成されています

それは問題ありませんが、データベースレベルでフィールドを自動生成しましたか?DBMLレベルで自動生成された場合、実際には値は生成されません。値がストレージプロバイダーによって生成されることをモデルに示すだけです(したがって、クエリの一部としての送信はおそらく省略されます)。

于 2012-12-03T14:05:21.360 に答える
1

テーブルを更新して、その列に ID 値 (自動インクリメント) を持たせる必要があります。

次に、DBML モデルを更新します-> DBML デザイナーからテーブルを削除し、サーバー エクスプローラーでテーブルを更新して、テーブル オブジェクトを再度ドラッグ アンド ドロップします。プロジェクトを生成すると、うまくいくはずです。

于 2012-12-03T13:57:56.070 に答える
0

using (VTMMedicalDBDataContext objVTMMedicalDBDataContext = 新しい VTMMedicalDBDataContext()) { ReadOnlyCollection objTimeZones = null;

 objTimeZones = TimeZoneInfo.GetSystemTimeZones();

 if (objTimeZones.Count > 0)
 {
     //List<TimeZoneMaster> listTimeZones = new List<TimeZoneMaster>();


     foreach (var timezone in objTimeZones.ToList())
     {
          TimeZoneMaster objTimeZoneMaster = new TimeZoneMaster();

         objTimeZoneMaster.TimeZoneName = timezone.DisplayName;

         var localName = timezone.DisplayName;

         objTimeZoneMaster.TimeZoneOffsetInMinutes = Convert.ToInt32(timezone.BaseUtcOffset.TotalMinutes);                      


         objVTMMedicalDBDataContext.TimeZoneMasters.InsertOnSubmit(objTimeZoneMaster);
         objVTMMedicalDBDataContext.SubmitChanges();


     }

 }

}

于 2018-04-17T17:10:07.117 に答える