Need to fetch Oracle RAW in C# string datatype "as is"

c# entity-framework-6 oracle

Question

Help me out, requirement is that I need the same value of Oracle RAW to be in C# as a string. I am able to save String as RAW value in oracle table, but while fetching it is giving exception "Object must implement IConvertible"

which I can understand that since RAW data type is not mapped to any primary data type so complier is giving this exception, But How can I achieve this?

I am using EF6 code first approach, in backend I am using Oracle 12C,

Below is the sample code,

 public partial class EF6TEST
{
    [Key]
    [Column(Order = 0)]
   // [MaxLength(32)]
    public string ID { get; set; }

    [Key]
    [Column(Order = 1)]
    [StringLength(50)]
    public string NAME { get; set; }
}
 public class BE
{
    public string id;
    public string name;
}


class Program
{
    static void Main(string[] args)
    {
        List<BE> be;
        try
        {
            using (var context = new Model1())
            {
                #region insert
                context.EF6TEST.Add(new EF6TEST()
                {
                    ID = "96A8B17B17FB464B886146A28399E7E2",
                    NAME = "NewRAM"
                });
                #endregion
                context.SaveChanges();

                #region fetch
                be = (from t in context.EF6TEST
                      select new BE
                      {
                          id = t.ID,
                          name = t.NAME
                      }).ToList<BE>();


                #endregion                                       

            }
            Console.ReadKey();
        }
        catch (Exception ex)
        {
            Console.WriteLine("Exception found");
        }
    }
1
0
6/18/2015 9:17:58 AM

Accepted Answer

The RAW datatype is documented as:

The RAW and LONG RAW datatypes are used for data that is not to be interpreted (not converted when moving data between different systems) by Oracle Database. These datatypes are intended for binary data or byte strings.

In other words, it's a better mapping for byte[] than string. Converting to a string requires an encoding to be applied.

I suggest you try mapping your column to byte[] instead, and then convert it to a string using an appropriate encoding within .NET. (e.g. Encoding.UTF8.GetString(bytes).)

2
6/18/2015 9:22:18 AM


Related Questions





Related

Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow
Licensed under: CC-BY-SA with attribution
Not affiliated with Stack Overflow