データモデルクラス内で、単一行を挿入して変更を保存するよりも単純な方法があります。約227レコード(408のうち)を正しく処理し、OutofMemoryExceptionを返します。これは、単一行のエントリを処理しているだけで、変更を保存していても発生しています。任意のアイデアはどのようにこの状況を解決するには?EFのあるC#コンソールアプリケーションが単一行の入力でOutofMemoryExceptionを返すのはなぜですか?
protected ADMIN_DB_Entities _AdminEntities = new ADMIN_DB_Entities();
public void InsertBase64Payload(string sBase64PayloadValue, string sSourceValue, Guid gSourcePrimaryKey, DateTime dDateProcessed)
{
Base64Payload newBase64PayLoadEntry = new Base64Payload();
newBase64PayLoadEntry.BASE64_VALUE = sBase64PayloadValue;
newBase64PayLoadEntry.SOURCE_TABLE = sSourceValue;
newBase64PayLoadEntry.SOURCE_PRIMARY_KEY = gSourcePrimaryKey;
newBase64PayLoadEntry.DATE_PROCESSED = dDateProcessed;
}
try
{
_AdminEntities.Base64Payload.Add(newBase64PayLoadEntry);
_AdminEntities.SaveChanges();
}
catch (Exception ex)
{
ConsoleAppLog.WriteLog(<Error Message here.>)
}
ロードするレコードごとに、メモリ使用量が増えていますか?あなたは明らかに非常に大きなBase64値で作業しており、最終的に使用可能なすべてのメモリを占有します。 –
ジャンクメモリを低く抑えるために手作業でガベージコレクションを行うか、またはEFの設定を調べて、OOM例外のポイントまで列挙しないようにする必要があります。 –
https://stackoverflow.com/questions/15941471/entity-framework-4-out-of-memory-on-savechanges –