' Id'表1'表1'无法设置为“System.Byte []'值。您必须将此属性设置为类型为' System.Guid'的非空值。

时间:2017-03-23 18:17:43

标签: c# entity-framework oracle12c

我在Oracle 12c使用Code First。我有一个班级

public class Table1
{
  public Guid Id { get; set; }
  public string SomeOtherStuff { get; set; }
} 

实体框架将ID转换为RAW

CREATE TABLE "FB"."Media" 
   (    "Id" RAW(16) NOT NULL ENABLE, ...

现在如果我这样做:

var list = db.Table1.SqlQuery("select * from Table1")).ToList();

我收到错误

  

' Id'表1'表1'无法设置为“System.Byte []'值。您必须将此属性设置为类型为' System.Guid'}的非空值。

编辑我正在使用Oracle.ManagedDataAccess.EntityFramework 6.121.2.0

1 个答案:

答案 0 :(得分:0)

问题是您的Oracle EF提供程序将Guid映射到Raw类型,但反过来,Raw会映射到字节数组。

如果您的提供商支持,您可以尝试自己指定列类型(取决于您的提供商,可能不支持)。

public class Table1
{

  [Column("Id", TypeName="VARCHAR(50)")]
  public Guid Id { get; set; }
  public string SomeOtherStuff { get; set; }
}