コンストラクターにいくつかの定義を持つクラスがあります。
public class Card
{
public Card()
{
DateCreated = DateTime.Now;
}
public virtual DateTime DateCreated { get; set; }
}
私が以下を呼び出すと:
_repository.GetCard(cardId);
_repository には次のものが含まれます。
public Card GetCard(int cardId)
{
var card = _db.Cards.FirstOrDefault(s => s.CardId == cardId); // happens immediately after this is hit
if (card != null) return card;
return null;
}
コンストラクター コードがヒットしています (ブレークポイントを設定しました)。どうしてこれなの?私はC#が初めてです-コンストラクターがヒットするのは、オブジェクトがvar newCard = new Card();
.
一部のオブジェクトでは、コンストラクターで新しいオブジェクトを作成するため (エンティティ作成をログに記録するための履歴エントリなど)、コンストラクター コードが頻繁にヒットするため、現在作成されているオブジェクトが多すぎるため、これが問題を引き起こしています。
_db コード:
public class AppDbContext : DbContext, IAppDbContext
{
public AppDbContext() : base("name=TestConnection")
{
}
public AppDbContext(string connectionString) : base(connectionString)
{
}
public DbSet<Card> Cards { get; set; }
void IAppDbContext.Save()
{
SaveChanges();
}
IQueryable<Card> IAppDbContext.Cards
{
get { return Cards; }
}
}