2017-03-23 29 views
0

我使用Code First与Oracle 12c。我有一个类'Table1'上的'Id'属性无法设置为'System.Byte []'值。您必须将此属性设置为'System.Guid'类型的非空值。

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

我得到一个错误

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

编辑:我使用Oracle.ManagedDataAccess.EntityFramework 6.121.2.0

+0

提示:SO不使用降价的三重反引号的味道,我们用4个空格缩进(或选择的代码,然后按Ctrl + K):) – DavidG

回答

0

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

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

+0

你自己尝试这种方法吗? – Toolkit

+0

不,我没有。此解决方案是否有效取决于实际的EF提供程序,这在原始文章中未提及。 这是为EF中的特定属性指定列类型的方法之一,因此OP使用的提供程序支持它,它应该可以工作(请参阅原始文章中括号内的部分)。 –

+0

我正在使用Oracle.ManagedDataAccess.EntityFramework 6.121.2.0 – Toolkit

相关问题