较旧的dB具有3个相关ID,由于某些未知原因,这些ID为小数,不能更改为INT。 使用旧的entityspace,我们不必插入ID。 新代码使用LINQ,如果我们不查找最后一个ID,然后将其与其他数据一起插入,则在插入时会出错。 因此,现在我们需要获取并插入下一个ID(太糟了,是的)。

[Id] (PK, numeric(18,0) not null)

我检查以确保数据类与我们不需要插入的INT匹配

这有效:

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_BalanceId",   
       AutoSync=AutoSync.OnInsert, DbType="Int NOT NULL IDENTITY", 
       IsPrimaryKey=true, IsDbGenerated=true)]

这不起作用:

[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id",     
       AutoSync=AutoSync.OnInsert, 
       DbType="Decimal(18,0) NOT NULL IDENTITY", 
       IsPrimaryKey=true, IsDbGenerated=true)]

我们不能将ID更改为INT :)

我的朋友这样做是为了插入Id,但是对于50,000个插入来说却很慢。

    var campaign = new Campaign
    {
        Id = subFactory.CampaignNewId(),
        UserId = userId,
        User = user.SystemUser,
        MessageId = whatMsgid == 0 ? (int?)null : whatMsgid,
        VMMessageId = whatMsgVmailid == 0 ? (int?)null : whatMsgVmailid,
        PriorityId = priorityOfcalls,
        TTSDataFileId = null,

方法如下:

 public int CampaignNewId()
 {
        return Convert.ToInt32(Context.Campaigns.Max(p=>p.Id)) + 1;
 }

迷失于此。 程序员会责备dB设计欠佳,而DBA当然会责怪程序员做错了。

  ask by Thomas Mahoney translate from so

本文未有回复,本站智能推荐: