2013-12-14 44 views
1

我们存储在SQL Server数据库中的图像,我用HotTowel的模板(感谢约翰爸爸) 我的模型是这样的:如何使用Breeze从数据库获取图像?

public class Product 
{ 
    public int Id { get; set; } 
    public string ProductName{ get; set; } 
    [DataType("image")] 
    public Byte[] ImageData { get; set; } 
} 

我用微风阿比控制器:

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 

我在做什么错?

回答

2

自从我发布这个问题以来,四个月过去了,直到我开始在这个问题上做更多的测试。

的讽刺部分,是我管理通过忽略投影查询到的图像数据到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() }" /> 

出于某种原因,使得投影●当未示出的图像数据uery。

我希望能帮助有相同情况的人。

相关问题