0
我想在兩個具有FK關係(一對多)的表上使用EF(模型優先)批量插入。下面的代碼正確插入了所有挑戰條目,但僅插入一次X量短缺。我的期望......我有10個短缺和2個挑戰。我應該收到2個挑戰條目和20個短缺條目。我只看到10個挑戰條目插入第一個短缺。 (下面的代碼被簡化)與FK關係模型的EF 6'Bulk'插入
//class for cloning Shortage collection
public class ShortageCollection : Collection<Shortage>
{
public ShortageCollection(IList<Shortage> source) : base(source) { }
public ShortageCollection() { }
public ShortageCollection Clone()
{
return Clone(this);
}
public static ShortageCollection Clone(ShortageCollection shortage)
{
var res = new ShortageCollection();
foreach (var s in shortage)
{
res.Add(s.Clone());
}
}
}
public class Shortage : StandardDB.Shortage
{
public Shortage Clone()
{
return new Shortage()
{
PART_NUMBER = this.PART_NUMBER,
Note = this.Note,
Qty = this.Qty,
ResponseMachine = this.ResponseMachine
};
}
}
public void CreateChallenge()
{
var JSONJobs = new JavaScriptSerializer().Deserialize<string[]>(Jobs);
var JSONParts = new JavaScriptSerializer().Deserialize<ChallengePartsList[]>(Parts);
using (ARTEntities art = new ARTEntities())
{
art.Configuration.AutoDetectChangesEnabled = false;
art.Configuration.ValidateOnSaveEnabled = false;
ShortageCollection sColl = new ShortageCollection();
foreach(var part in JSONParts)
{
Shortage s = new Shortage()
{
PART_NUMBER = part.Invid,
Note = Challenge,
Qty = part.Qty,
ResponseMachine = ResponseMachine
};
sColl.Add(s);
}
foreach (var job in JSONJobs) {
Challenge c = new Challenge()
{
InitiatorORG = Org,
TypeID = TypeID,
DISCRETE_JOB = job,
InitiatorPERSON_ID = InitiatorPersonID,
InitiatedDate = datenow,
Challenge1 = Challenge,
ChampionGroupID = ChampionGroupID,
StatusID = StatusID,
InitiatorGroupID = InitiatorGroupID,
DivisionID = DivisionID,
Shortages = sColl.Clone()
};
art.Challenges.Add(c);
}
art.SaveChanges();
}
}
感謝您指點我正確的方向。你上面的代碼產生這個錯誤。 (局部變量)短缺s。 's'是一個變量,但用於類型。 –
哎呀看編輯。刪除了'new'關鍵字 –
謝謝。看起來,如果我不是壓倒一流的模特,它就會起作用。我得到一個「CLR類型到EDM類型的映射 含糊不清,因爲多個CLR類型匹配EDM類型'Shortage'。 以前發現的CLR類型'StandardDB.Shortage',新發現的CLR類型'WebApps.Controllers.ChallengeController + Shortage '「error –