私はBaseScriptを持っていますが、スクリプトには関連するエンティティをロードしないGetAllがあります。BaseScript(DbContext)の関連エンティティをロードしています
DbContextにはLazyLodingEnabledが無効です(false)。
問題を理解するためのコードに従ってください。この例では、言語でメッセージを取得したいときにユーザーとmessageViewsをロードしません。
BaseScript
public abstract class BaseScript<TEntity> where TEntity : EntityBase
{
public virtual IEnumerable<TEntity> GetAll()
{
using (EntityDbContext ctx = new EntityDbContext())
{
return ctx.Set<TEntity>().ToList();
}
}
}
MessageScript
public class MessageScript : BaseScript<Message>
{
public IEnumerable<Message> GetAllByLanguagePublic(string language)
{
return this.GetAllPublic().Where(x => x.Language == language).ToList();
}
}
メッセージエンティティ:
public class Message : EntityBase
{
public string Text { get; set; }
public string Language { get; set; }
public virtual User User { get; set; }
public Guid UserId { get; set; }
public virtual ICollection<MessageView> MessageViews { get; set; }
}