[Mono-devel-list] Implementing custom data provider

Aleksey Sudakov zander at objectstorm.net
Thu Mar 13 15:07:10 EST 2003


This is not really related to Mono, but since you guys implemented so many
custom data providers that I use as a reference I guess I ask anyway. I am
using .NET for development and later would hope to just recompile on Mono,
so everything bellow is about .NET.

I am implementing custom data provider and I hit a problem I couldn't figure
out. Here is a snippet of a code that shows how I use the adapter to fill

MOPConnection myConnection = new
MOPCommand myCommand = new MOPCommand(new QuerySpec("User", null),

MOPDataAdapter myAdapter = new MOPDataAdapter(myCommand);
myAdapter.TableMappings.Add("Table", "User");

DataSet ds = new DataSet("Users");

This code works fine alas result XML doesn't have columns and looks like

<User />
<User />

I figured I am missing automatic schema generation during
myAdapter.Fill(ds); so I added:

myAdapter.MissingSchemaAction = MissingSchemaAction.Add;

right before myAdapter.Fill(ds); and although this suppose (or may be I am
missing something here???) to add schema information to the dataset without
constraints... well it doesn't and MOPDataReader.GetSchemaTable() is never

So instead of MissingSchemaAction.Add I used MissingSchemaAction.AddWithKey
and this time  GetSchemaTable method got called, but althought my DataReader
for every column sets IsUnique and IsKey to false in GetSchemaTable()  I am
getting "Failed to enable constraints. One or more rows contain values
violating non-null, unique, or foreign-key constraints."

My questions are:
1. Why DbDataAdapter with MissingSchemaAction set to MissingSchemaAction.Add
never calls GetSchemaTable on a DataReader?

2. Why I am getting an exception even though I don't have any constraints
set when I set MissingSchemaAction to MissingSchemaAction.AddWithKey?

3. What columns should I set to true in DataReader.GetSchemaTable() to
properly enable primary key constraints in MissingSchemaAction.AddWithKey

Any hints would be greately appreciated,

More information about the Mono-devel-list mailing list