0

我有一个旧的 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; 放;} ?

4

1 回答 1

0

解决方案比我想象的要容易。我将在 SQL 中标识为图像的内容更改为字节数组 (byte[]),并创建了一个处理 BITS 值的属性 (Specs)。Entity Framework 很高兴,它可以双向工作。出乎意料的容易。

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);
     }

}
于 2012-08-17T19:43:37.843 回答