gpt4 book ai didi

aspnetboilerplate - 错误 "Must set UnitOfWorkManager before use it"

转载 作者:行者123 更新时间:2023-12-05 07:40:51 36 4
gpt4 key购买 nike

我正在 ASP.NET 样板引擎中开发服务并从主题中获取错误。错误的性质不清楚,因为我从 ApplicationService 继承,如文档所示。代码:

namespace MyAbilities.Api.Blob
{
public class BlobService : ApplicationService, IBlobService
{
public readonly IRepository<UserMedia, int> _blobRepository;

public BlobService(IRepository<UserMedia, int> blobRepository)
{
_blobRepository = blobRepository;
}

public async Task<List<BlobDto>> UploadBlobs(HttpContent httpContent)
{
var blobUploadProvider = new BlobStorageUploadProvider();

var list = await httpContent.ReadAsMultipartAsync(blobUploadProvider)
.ContinueWith(task =>
{
if (task.IsFaulted || task.IsCanceled)
{
if (task.Exception != null) throw task.Exception;
}

var provider = task.Result;
return provider.Uploads.ToList();
});

// store blob info in the database

foreach (var blobDto in list)
{
SaveBlobData(blobDto);
}

return list;
}

public void SaveBlobData(BlobDto blobData)
{
UserMedia um = blobData.MapTo<UserMedia>();
_blobRepository.InsertOrUpdateAndGetId(um);
CurrentUnitOfWork.SaveChanges();
}

public async Task<BlobDto> DownloadBlob(int blobId)
{
// TODO: Implement this helper method. It should retrieve blob info
// from the database, based on the blobId. The record should contain the
// blobName, which should be returned as the result of this helper method.
var blobName = GetBlobName(blobId);

if (!String.IsNullOrEmpty(blobName))
{
var container = BlobHelper.GetBlobContainer();
var blob = container.GetBlockBlobReference(blobName);

// Download the blob into a memory stream. Notice that we're not putting the memory
// stream in a using statement. This is because we need the stream to be open for the
// API controller in order for the file to actually be downloadable. The closing and
// disposing of the stream is handled by the Web API framework.
var ms = new MemoryStream();
await blob.DownloadToStreamAsync(ms);

// Strip off any folder structure so the file name is just the file name
var lastPos = blob.Name.LastIndexOf('/');
var fileName = blob.Name.Substring(lastPos + 1, blob.Name.Length - lastPos - 1);

// Build and return the download model with the blob stream and its relevant info
var download = new BlobDto
{
FileName = fileName,
FileUrl = Convert.ToString(blob.Uri),
FileSizeInBytes = blob.Properties.Length,
ContentType = blob.Properties.ContentType
};

return download;
}

// Otherwise
return null;
}


//Retrieve blob info from the database
private string GetBlobName(int blobId)
{
throw new NotImplementedException();
}
}
}

错误甚至在应用程序流跳转到“SaveBlobData”方法之前就出现了。我错过了什么吗?

最佳答案

不想回答我自己的问题,但就是这样......过了一会儿,我发现如果 UnitOfWorkManager 由于某种原因不可用,我可以通过在构造函数中初始化 IUnitOfWorkManager 在代码中实例化它。然后,您可以在 Save 方法中简单地使用以下构造:

    using (var unitOfWork = _unitOfWorkManager.Begin())
{
//Save logic...

unitOfWork.Complete();
}

关于aspnetboilerplate - 错误 "Must set UnitOfWorkManager before use it",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45821089/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com