实体框架代码第一个文本存储为SQL中的图像

时间:2012-08-17 18:51:09

标签: sql entity-framework ef-code-first binary-data

我有一个旧的SQL数据库,它有一个链接表来存储订单行的规范。应用程序设计人员使用SQL中的图像字段将文本存储为二进制数据。我在下面嘲笑了一个例子:

public class OrderLine
{
    public int ID { get; set; }
    public int OrderID { get; set; }
    public int LineNo { get; set; }
    public string Product { get; set; }
    public decimal Quantity { get; set; }
    public decimal UnitPrice { get; set; }
    public string Status { get; set; }
}

public class OrderLineSpecifications
{
    public int ID { get; set; }
    public int OrderID { get; set; }
    public int OrderLineNo { get; set; }
    public Image Bits { get; set; }   // <--- This Line
    public int Bit_Length { get; set; }
}

SQL表定义

    [ID] [int] IDENTITY(1,1) NOT NULL,
    [OrderID] [varchar](15) NOT NULL,
    [OrderLineNo] [smallint] NOT NULL,
    [Bits] [image] NULL,
    [Bit_Length] [int] NOT NULL

目前我必须使用SQL

cast(cast(Bits as varbinary(max)) as varchar(max)) 

提取文本,然后执行反向操作将其返回到数据库。是否可以在EF中完成转换?也许在物业层面{get;设置;}?

1 个答案:

答案 0 :(得分:0)

解决方案比我想象的要容易。我将SQL中标识为Image的内容更改为字节数组(byte []),并创建了处理BITS值的属性(Specs)。实体框架很高兴,它可以在两个方向上运作。非常容易。

public virtual byte[] BITS { get; set; }
public virtual int BITS_LENGTH { get; set; }
[NotMapped]
public virtual string Specs
{
    get
    {
        UTF8Encoding enc = new UTF8Encoding();
        string str = enc.GetString(BITS);
        return str;
    }
    set
    {
        UTF8Encoding encoding = new UTF8Encoding();
        BITS = encoding.GetBytes(value);
     }

}