我正在将一个记录列表插入到DB表中,Linq to sql如下:
//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();
}
}
}
我有一个主键,但我已经把它作为AutoGeneratd在DBML Nullable中为true,因为假。我无法摆脱它...请建议一些方法。
答案 0 :(得分:8)
最后经过多次麻烦后,我得到了一个新概念的答案..
对于所有面临类似问题的人来说,这是一个明确的解决方案:
您需要创建“Table”类的对象(要在DB中更新的对象), 在循环( *为每个,for或任何其他..)内部,以便不更新相同的记录,每个对象使用不同的内存位置(因为本地实例在内部被破坏)仅循环..) *
答案 1 :(得分:3)
我有一个主键,但我已经在DBML
中将其设为AutoGenerated为true
那很好,但是,您是否已在数据库级别自动生成该字段? DBML级别的AutoGenerated实际上不会为您生成任何值,它只是向模型指示该值将由存储提供程序生成(因此它可能省略将其作为查询的一部分发送)。
答案 2 :(得分:1)
您必须更新表以使该列具有标识值(自动增量)。
然后更新您的DBML模型 - &gt;从DBML设计器中删除表,在服务器资源管理器中刷新表,然后再次拖放表对象。生成项目,它应该工作得很好。
答案 3 :(得分:0)
作为替代方法,您可以在db中调用存储过程来执行插入操作: Updating database by using stored procedures.
答案 4 :(得分:0)
使用(VTMMedicalDBDataContext objVTMMedicalDBDataContext = new 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();
}
}
}