我正在编写DDD应用程序,并且试图使用LazyLoading选项。
我面临的问题是,如果我不使用LazyLoading,则可以正常运行我的应用程序,但是一旦尝试使用UseLazyLoadingProxies(),当我得到一个实体时,我会得到标题异常。就像我在stacktrace中看到的那样,似乎抛出了Castle.DynamicProxies]
这是我的实体:
public class Technology //: Entity { // fields private readonly IList<SubTechnology> subTechnologies = new List<SubTechnology>(); // properties public long Id { get; private set; } public virtual TechnologyName Name { get; private set; } public virtual IReadOnlyList<SubTechnology> SubTechnologies => subTechnologies.ToList().AsReadOnly(); public Technology() { } public Technology(TechnologyName technologyName) : this() { Name = technologyName; } //public void AddSubtechnology(SubTechnology subTech) //{ //}
这就是我调用代码的方式:
public sealed class QuestionController { private readonly InterviewsDbContext context; public QuestionController(InterviewsDbContext context) { this.context = context; } public string GetTechnology(long technologyId) { var tech = context.Technology.Single(t => t.Id == technologyId); return tech?.Name.Value; } }
向我表明我没有实施我的CTOR,但是我尝试了公共的,受保护的,内部的,并且似乎无法使其正常工作。
我唯一能说的是,域模型不在我的上下文所处的同一程序集中...不确定是否与该问题有关。
有什么想法吗? thx
我正在编写DDD应用程序,并且尝试使用LazyLoading选项。我面临的问题是,如果我不使用LazyLoading,则可以正常运行我的应用程序,但是一旦我尝试使用......>
好吧,我认为我真的很愚蠢,我只是将代码转换为真正愚蠢的(贫血的模型),问题就消失了。
我发现后备字段为IList<T>
,类型为IReadOnlyList<T>
的属性和代理不会创建该类型。