簡體   English   中英

具有相關實體的SQLBulk Copy(實體框架)

[英]SQLBulk Copy With Related Entities (Entity Framework)

說我有以下實體。 (為簡潔起見,已大大簡化,但包含了關鍵屬性)

public  class Crime 
{

       [Key]
       public int CrimeId {get;set;}
       public virtual ICollection<Victim> Victims {get;set;}
       public virtual CrimeDetail Detail {get;set}

}

public class Victim
{
       [Key]
       public int VictimId {get;set;}
       public string VictimCategory {get;set;}
}

public class CrimeDetail
{
       [Key]
       public int id {get;set;}
       public string DetailText {get;set;}
}

我有600,000多個這些記錄要插入SQL Server 2008 Express R2,使用Entity Framework 4.4需要花費一些時間。

理想情況下,我想使用SQLBulkCopy批量插入這些記錄,但是由於它不支持復雜類型(至少不是開箱即用的),因此我正在嘗試尋找其他可能的解決方案。

我願意在必要時更改我的模型。

編輯:在這種情況下, 來自MSDNAsDataReader Extension方法有所幫助嗎?

當遇到相同的問題時,我們最終將獲得具有EF的代碼優先生成的數據庫以及用於SQLBulkCopy的強類型生成的數據集。

(我們從未真正編碼過這些類,它們是使用1-10gb xml文件的xsd定義中的xsd util生成的。我現在想回想一下當我們還沒有從同一個xsd生成類型化數據集時,但這似乎與您的問題無關)

根據獲得這600k條以上記錄的方式,您可以更改代碼以使用生成的強類型數據集,也可以使用某些對象到對象映射器將EF POCO對象映射到數據集,因為這些屬性將被命名為相同的屬性。

這是生成強類型數據集的鏈接

這是一個如何使用SqlBulkInsert的示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM