【发布时间】:2013-09-15 14:13:16
【问题描述】:
我正在尝试将 Guid 属性映射到 Oracle。这是它的声明:
[Key]
[Column(Order = 0, TypeName = "RAW")]
[MaxLength(16)]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public Guid Id { get; set; }
但是,我不断收到以下异常:
指定的架构无效。错误:
(7,12) : error 2019: Member Mapping specified is not valid. The type 'Edm.Guid[Nullable=False,DefaultValue=]' of member 'Id' in type 'Model.Test' is not compatible with 'OracleEFProvider.raw[Nullable=False,DefaultValue=,MaxLength=2000,FixedLength=False]' of member 'Id' in type 'CodeFirstDatabaseSchema.Test'.
我错过了什么?
谢谢!
RP
【问题讨论】:
-
我相信 MaxLength 属性在这种情况下是无操作的。如果您查看类型定义,您将看到 MaxLength 是 2000 而不是 16。顺便说一句。您是否尝试过根本不使用
Column属性(或者只是不指定类型)。提供者应该知道如何将 GUID 类型映射到数据库类型。顺便提一句。您使用哪个 Oracle 提供商? -
感谢您的回复!我正在使用最新的 ODAC。即使没有 Column 和 MaxLength 属性,它也不起作用。我设法通过从 Guid 切换到 Byte[] 来解决它,但我相信这是可以实现的。
-
您也许可以使用 Raw(17) 而不是 16。这映射到二进制类型。但是你必须弄清楚如何处理字节
标签: .net oracle entity-framework ef-code-first