EF。为什么仅为某些实体创建动态代理?

时间:2013-11-22 10:36:10

标签: entity-framework

我首先使用Entity Framework和数据库。我有一个带有entites的edmx文件,其中包括Order和Device。

我做这样最简单的查询。

var o = db.Orders.First();
var d = db.Device.First();

如果我在这些行之后放置断点并为o和d添加监视,我可以看到o的类型为“System.Data.Entity.DynamicProxies.Order_F41BB20DDE174FDA86E0D7716990689D9E5D9260345B31726A97A13750358370”,而d的类型为“MyNamespace.Device” ”

为什么没有为Device生成dynamicproxy?

由于没有为Device生成代理,因此延迟加载不起作用。

我的设备类如下所示:

public partial class Device
{
    protected Device()
    {
        this.ActiveLoadingComputers = new HashSet<ActiveLoadingComputer>();
        this.LoadReports = new HashSet<LoadReport>();
    }

    public int Id { get; protected set; }
    public string Name { get; set; }
    public Nullable<System.DateTime> Updated { get; set; }
    public Nullable<int> LoadingPlace_Id { get; protected set; }

    internal virtual ICollection<ActiveLoadingComputer> ActiveLoadingComputers { get; private set; }
    internal virtual ICollection<LoadReport> LoadReports { get; private set; }
    internal virtual LoadingPlace LoadingPlace { get; private set; }
}

它还有另一个部分定义。

public partial class Device
{
    public Device(string name) : this()
    {
        Name = name;
    }

}

1 个答案:

答案 0 :(得分:0)

这是由于导航属性的set访问器的私有说明符。