dotConnect for Oracle 8.2 + EF6.0.2 Oracle 12C Identity column problem
Posted: Wed 12 Feb 2014 23:12
Hi
I'm using dotConnect for Oracle 8.2.90.0 with EntityFramework 6.0.2. It works great for Oracle 11g. I recently upgraded to Oracle 12c. The provider generates Identity keys for a composite key columns when "DatabaseGeneratedOption.None" was specified in the mapping.
public ContractPermitMap()
{
// Primary Key
this.HasKey(t => new { ContractId = t.ContractId, PermitSid = t.PermitSid });
this.Property(t => t.ContractId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
this.Property(t => t.PermitSid)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
// Table & Column Mappings
this.ToTable("CONTRACTPERMIT", "AZ");
this.Property(t => t.ContractId).HasColumnName("CONTRACTID");
this.Property(t => t.PermitSid).HasColumnName("PERMITSID");
}
The generated script for Oracle 12c
CREATE TABLE AZ.CONTRACTPERMIT (
CONTRACTID NUMBER(10) GENERATED ALWAYS AS IDENTITY NOT NULL,
PERMITSID NUMBER(10) GENERATED ALWAYS AS IDENTITY NOT NULL,
PRIMARY KEY (CONTRACTID, PERMITSID)
)
Oracle Error
ORA-30669: table can have only one identity column
The script generated for Oracle 11g
CREATE TABLE AZ.CONTRACTPERMIT (
CONTRACTID NUMBER(10) NOT NULL,
PERMITSID NUMBER(10) NOT NULL,
PRIMARY KEY (CONTRACTID, PERMITSID)
)
This is what I expected and it works great.
Thanks
JL
I'm using dotConnect for Oracle 8.2.90.0 with EntityFramework 6.0.2. It works great for Oracle 11g. I recently upgraded to Oracle 12c. The provider generates Identity keys for a composite key columns when "DatabaseGeneratedOption.None" was specified in the mapping.
public ContractPermitMap()
{
// Primary Key
this.HasKey(t => new { ContractId = t.ContractId, PermitSid = t.PermitSid });
this.Property(t => t.ContractId)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
this.Property(t => t.PermitSid)
.HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);
// Table & Column Mappings
this.ToTable("CONTRACTPERMIT", "AZ");
this.Property(t => t.ContractId).HasColumnName("CONTRACTID");
this.Property(t => t.PermitSid).HasColumnName("PERMITSID");
}
The generated script for Oracle 12c
CREATE TABLE AZ.CONTRACTPERMIT (
CONTRACTID NUMBER(10) GENERATED ALWAYS AS IDENTITY NOT NULL,
PERMITSID NUMBER(10) GENERATED ALWAYS AS IDENTITY NOT NULL,
PRIMARY KEY (CONTRACTID, PERMITSID)
)
Oracle Error
ORA-30669: table can have only one identity column
The script generated for Oracle 11g
CREATE TABLE AZ.CONTRACTPERMIT (
CONTRACTID NUMBER(10) NOT NULL,
PERMITSID NUMBER(10) NOT NULL,
PRIMARY KEY (CONTRACTID, PERMITSID)
)
This is what I expected and it works great.
Thanks
JL