我创建了一个项目,将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;
}
}
但我想重用以前的方法