我運行了一個電子郵件刮板並將所有的電子郵件放到一個文件中,該文件將被放入我的類的數據庫中(它們將不會用於任何事情,只是爲了分配) ,我只是有點麻煩,把他們正確地放入數據庫。現在我有一個包含1000封電子郵件的文件,它們的URL和域名(我將它放到一個文件中,因爲收集所有電子郵件需要很長時間,而且我讓它運行了幾個晚上)。實體框架,主鍵問題
的文件列表,電子郵件,網址,域名,電子郵件,網址等..所以我讀整個文件到隊列中,然後將它們插入到數據庫這樣的:
public class Source
{
[Key]
public int SourceId { get; set; }
[StringLength(500)]
public string Domain { get; set; }
// Nav Prop
public virtual List<Email> Emails { get; set; }
}
public class Email // POCO
{
public string Url { get; set; }
public int EmailId { get; set; }
public string EmailAddress { get; set; }
public DateTime CreationTime { get; set; }
// Nav Prop
public virtual Source Source { get; set; }
}
using (var db = new ScraperContext())
{
while (emailArrayQueue.Count > 0)
{
db.Emails.Add(new Email()
{
EmailAddress = (string)emailArrayQueue.Dequeue(),
Url = (string)emailArrayQueue.Dequeue(),
CreationTime = DateTime.UtcNow,
Source = new Source()
{
SourceId = emailArrayQueue.Peek().GetHashCode(),//line that doesn't work
Domain = (string)emailArrayQueue.Dequeue()
}
});
db.SaveChanges();
}
}
由於我想這是怎麼工作的本質,我認爲這將是最好的方式讓他們進入數據庫,但突出顯示的行似乎不工作,因爲每個源ID似乎只是默認它的數字被創建。這意味着數據庫中既有1000個來源,又有1000個電子郵件。我試圖讓域名成爲主鍵,因此域名比電子郵件少得多。