Wcf不保存更改

时间:2014-09-01 21:40:29

标签: database entity-framework wcf

我创建了一个项目,将MVC应用程序的某些操作暴露给Winforms应用程序,其中一个操作必须将新访问者保存到数据库中,我有一个MVC项目,该项目引用了本地服务(使用EF6)项目在数据库中写入OK!,但是当我创建WCF项目以使用服务项目并调用write方法时,这完全正常,没有错误但没有写入数据。

这是我的WCF的代码

public async Task<bool> CreateAsync(VisitanteComposite item)
    {
        try
        {
            var myTask = Task.Factory.StartNew(() => _visitanteServicio.Create(Mapper.Map<Visitante>(item)));
            await myTask;
            return myTask.IsCompleted;
        }
        catch (Exception)
        {
            return false;
        }
    }

这些是通用的创建方法

    public virtual void Create(T item)
    {
        try
        {
            Repositorio.Add(item);
            UnitOfWork.SaveChanges();
        }
        catch (Exception ex)
        {
            //_logger.Debug(item.GetType() + " Error al crear:  " + ex.Message);
            throw new ServiceException("Ocurrio un error al crear el item", ex);
        }
    }

这些是存储库方法

 public virtual void Add(T entity)
    {
        DbContext.Set<T>().Add(entity);
    }

我将WCF重写为此工作

public async Task<bool> CreateAsync(VisitanteComposite item)
    {
        try
        {
            var myTask = Task.Factory.StartNew(() =>
            {
                using (var db = new ModelContainer())
                {
                    var visitante = new Visitante
                    {
                        Apellido = item.Apellido,
                        Nombre = item.Nombre,
                        TipoDocumentoId = item.TipoDocumentoId,
                        NumeroDocumento = item.NumeroDocumento
                    };
                    AplicarFiltros(visitante);
                    db.Set<Visitante>().Add(visitante);
                    db.SaveChanges();
                }

            });
            await myTask;

            return myTask.IsCompleted;
        }
        catch (Exception)
        {
            return false;
        }
    }

但我想重用以前的方法

0 个答案:

没有答案