我想在模型上使用延迟加载集合,但我希望通过单独的方法来完成“添加/删除”功能。所以像这样:
class Model
{
protected virtual ICollection<Something> _somethings { get; set; }
public IEnumerable<Something> Somethings
{
get { return _somethings; }
}
public void AddSomething(Something thingToAdd)
{
/* logic */
_somethings.Add(thingToAdd);
}
}
我不知道如何为此配置映射。我研究了使用配置类:EntityConfiguration。但是由于该属性是 protected ,所以我不知道如何在其上设置配置。有什么方法可以完成我在这里要做的事情吗?
最佳答案
您可以使用只读静态表达式来访问 protected 属性,如下所示
protected virtual ICollection<Something> _somesing { get; set; }
public static readonly Expression<Func<Model, ICollection<Something>>> Expression = p => p._something;
public IReadOnlyCollection<Something> Something
{
return _sumething.AsReadOnly();
}
并在DbContext类的OnModelCreating方法中使用它来映射 protected 属性
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Model>().HasMany<Something>(Model.Expression);
}
关于c# - Entity Framework CTP4代码优先: Mapping protected properties,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3577891/