Exemplo n.º 1
0
                internal protected override void Insert(Entity entity)
                {
                    _dp.EnsureStore();

                    string key = _dp.GetRealKey(entity);

                    //在生成 Id 时,为某个模型生成临时使用的本地 Id。
                    if (!entity.HasId)
                    {
                        var found = _dp.FindByRealKey(key);
                        if (found != null)
                        {
                            //如果这个实体已经存在于内存中,则更新新对象的 Id,并在最后把新对象的数据存储起来即可。
                            entity.LoadProperty(Entity.IdProperty, found.Id);
                        }
                        else
                        {
                            var newId = entity.KeyProvider.NewLocalId();
                            entity.LoadProperty(Entity.IdProperty, newId);
                        }
                    }

                    //有些实体并不一定通过 CDU 接口保存到 _memoryRows 中,而是在查询时临时生成。
                    //这时,也需要把这些实体都加入到 _memoryRows 中。
                    _dp._memoryRows[key] = _dp.ToRow(entity);
                }
Exemplo n.º 2
0
                public override void InsertToPersistence(Entity entity)
                {
                    _dp.EnsureStore();

                    string key = _dp.GetRealKey(entity);

                    //在生成 Id 时,为某个模型生成临时使用的本地 Id。
                    var idProvider = (entity as IEntityWithId).IdProvider;

                    if (!idProvider.IsAvailable(entity.Id))
                    {
                        var found = _dp.FindByRealKey(key);
                        if (found != null)
                        {
                            //如果这个实体已经存在于内存中,则更新新对象的 Id,并在最后把新对象的数据存储起来即可。
                            entity.LoadProperty(Entity.IdProperty, found.Id);
                        }
                        else
                        {
                            var newId = idProvider.NewLocalValue();
                            entity.LoadProperty(Entity.IdProperty, newId);
                        }
                    }

                    //有些实体并不一定通过 CDU 接口保存到 _memoryRows 中,而是在查询时临时生成。
                    //这时,也需要把这些实体都加入到 _memoryRows 中。
                    _dp._memoryRows[key] = _dp.ToRow(entity);
                }