[fdo-users] Cannot insert to PostGIS
Brent Robinson
brent.robinson at autodesk.com
Fri Jun 18 08:52:50 EDT 2010
Hi Hanko,
This exception occurs when the class is abstract or has no identity properties. I'm not sure why it happens in this particular case; the class was generated from an existing table so it should be non-abstract, and one identity property should have been generated from the primary key column.
The class definition generated can be checked by executing a FdoIDescribeSchema command and then navigating to the class definition, something like:
using (IDescribeSchema descCommand =
(IDescribeSchema)FDOConnection.CreateCommand(OSGeo.FDO.Commands.CommandType.CommandType_DescribeSchema))
{
FeatureSchemaCollection schemas = descCommand.Execute();
FeatureSchema schema = schemas.FindItem("ShipSysSchema");
classDefinition classDef = schema.classes.FindItem("Ship");
Boolean isAbstract = classDef.isAbstract;
Int idCount = classDef.identityProperties.Count;
}
I don't work much in C# so the above might need some changes.
Another this that was curious is that the error message reports the class as ' Ship' with a leading blank. Was the blank in the original message or just a typo in the posting?
Brent.
-----Original Message-----
From: fdo-users-bounces at lists.osgeo.org [mailto:fdo-users-bounces at lists.osgeo.org] On Behalf Of hanko
Sent: Friday, June 18, 2010 5:37 AM
To: fdo-users at lists.osgeo.org
Subject: [fdo-users] Cannot insert to PostGIS
I'm using the FDO PostgreSQL ("OSGeo.PostgreSQL.3.5") provider to connect to
my PostGreSQL 8.2 + Postgis 1.4 database.
I have an exception when i try to insert data with IInsert command.
My table in PostGIS (created with FDO):
CREATE TABLE "ShipSysSchema"."Ship"
(
"ID" bigint NOT NULL DEFAULT
nextval('"ShipSysSchema"."Ship_ID_seq"'::regclass),
"Test" character varying(255) NOT NULL,
"Velocity" double precision NOT NULL,
"Direction" double precision NOT NULL,
"Geom" geometry,
CONSTRAINT pk_shipsysschema_ship PRIMARY KEY ("ID"),
CONSTRAINT "Ship_Direction_check" CHECK ("Direction" >= 0::double
precision AND "Direction" <= 360::double precision),
CONSTRAINT "Ship_Velocity_check" CHECK ("Velocity" >= 0::double precision
AND "Velocity" < 100::double precision),
CONSTRAINT "enforce_dims_Geom" CHECK (ndims("Geom") = 2),
CONSTRAINT "enforce_srid_Geom" CHECK (srid("Geom") = 3007)
)
WITH (
OIDS=FALSE
);
My code:
public void Insert()
{
using (IInsert insertCommand =
(IInsert)FDOConnection.CreateCommand(OSGeo.FDO.Commands.CommandType.CommandType_Insert))
{
insertCommand.SetFeatureClassName("Ship"); // <- I get exception here
IsertData(insertCommand, 10.5, 12.5, 11, 4);
insertCommand.Execute();
}
}
Exception:
OSGeo.FDO.Common.Exception was caught
Message="Creating/Updating a standalone instance for class ' Ship' is not
allowed "
Source="OSGeo.FDO"
Do you have an idea why ?
Thank,
Hanko
--
View this message in context: http://osgeo-org.1803224.n2.nabble.com/Cannot-insert-to-PostGIS-tp5194654p5194654.html
Sent from the FDO Users mailing list archive at Nabble.com.
_______________________________________________
fdo-users mailing list
fdo-users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/fdo-users
More information about the fdo-users
mailing list