我们将图像存储在SQL Server数据库中,我使用HotTowel的模板(感谢John Papa) 我的模型是这样的:
public class Product
{
public int Id { get; set; }
public string ProductName{ get; set; }
[DataType("image")]
public Byte[] ImageData { get; set; }
}
我使用Breeze Api控制器:
public IQueryable<Product> Products()
{
return _contextProvider.Context.Products;
}
客户代码:
var getProductPartials = function (productObservable)
{
var query = EntityQuery.from('Products')
.select('id, productName,imageData')
.take(10);
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
var list = partialMapper.mapDtosToEntities(
manager, data.results, entityNames.product, 'id');
if (productObservable) {
productObservable(list);
}
log('Retrieved [Products] from remote data source',
data, true);
}
}
问题是我无法将图像数据绑定到UI。
查看元数据:
"Id":1,"ProductName":"Product A","ImageData":{"$type":"System.Byte[], mscorlib","$value":"/9j/4AAQSkZJRgABAQEAYABgAAD/4SOMRXhpZgAASUkqA etc...
调试显示没有来自(e.results)的图像数据:
imageData: Object
__proto__: Object
我做错了什么?
答案 0 :(得分:2)
自从我发布这个问题以来已经过去了四个月,直到我在这个问题上进行更多测试为止。
Ironic部分,我设法通过忽略投影查询将图像数据绑定到UI:
将客户端代码修改为:
var getProductPartials = function (productObservable){
var query = EntityQuery.from('Products').take(10);
// .select('id, productName,imageData'); Removing this solved the proplem
return manager.executeQuery(query)
.then(querySucceeded)
.fail(queryFailed);
function querySucceeded(data) {
// var list = partialMapper.mapDtosToEntities(
// manager, data.results, entityNames.product, 'id');
if (productObservable) productObservable(data.results);
log('Retrieved [Products] from remote data source',
data, true);
}
}
然后绑定:
<img data-bind="attr: { src: 'data:image/png;base64,' + imageData() }" />
出于某种原因,在进行投影查询时不会显示图像数据。
我希望能帮助处于同样情况的人。