日期:2014-05-20  浏览次数:20830 次

EntityRef<T>.Entity的内部机制是如何实现的?
EntityRef<T>是一个struct。以下是通过反射得到的EntityRef<T>结构:
C# code
 // 摘要:
    //     为 LINQ to SQL 应用程序中的一对多关系的单一实例方提供延迟加载和关系维护。
    //
    // 类型参数:
    //   TEntity:
    //     目标实体的类型。
    public struct EntityRef<TEntity> where TEntity : class
    {
        //
        // 摘要:
        //     通过引用目标实体初始化 System.Data.Linq.EntityRef<TEntity> 类的一个新实例。
        //
        // 参数:
        //   entityRef:
        //     目标实体。
        public EntityRef(EntityRef<TEntity> entityRef);
        //
        // 摘要:
        //     通过指定源初始化 System.Data.Linq.EntityRef<TEntity> 类的一个新实例。
        //
        // 参数:
        //   source:
        //     引用源。
        public EntityRef(IEnumerable<TEntity> source);
        //
        // 摘要:
        //     通过指定目标实体初始化 System.Data.Linq.EntityRef<TEntity> 类的一个新实例。
        //
        // 参数:
        //   entity:
        //     目标实体。
        public EntityRef(TEntity entity);

        // 摘要:
        //     获取或设置目标实体。
        //
        // 返回结果:
        //     目标实体。
        public TEntity Entity { get; set; }
        //
        // 摘要:
        //     获取一个值,该值指示是否已加载或分配目标。
        //
        // 返回结果:
        //     如果已加载或分配目标,则为 True。
        public bool HasLoadedOrAssignedValue { get; }
    }


刚才在看EntityRef<T>与EntitySet<T>的关系,一下脑筋转不过这个弯了。

问题一:
在EntityRef<T>内部应该保存有一个对Entity对象的引用。如果单纯地返回这个引用值本身,那EntityRef<T>返回的就是引用的引用。因此需要一个Entity属性来转换成对Entity对象的引用。或者是其他什么机制?

问题二:
自己如何仿效EntityRef<T>,实现一个类似EntityRef<T>的类?
想了半天,没想通,可能钻进牛角尖了。

还请各位不吝赐教,在此先谢过了。



------解决方案--------------------
在EntityRef<T>内确实要保存一个Entity对象。
不太明白你的问题,你是想问怎么获取对象与数据的映射吗?