Just checked out what you can fake around here.
var row = new ShimDataRow().Instance;
ShimDataRowCollection
.AllInstances
.ItemGetInt32 = (collection, i) => row;
ShimDataRow
.AllInstances
.ItemGetString = (dataRow, s) => "*mocked id*";
You might consider also mocking the datatable and such if needed, since that would allow you to avoid fetching an instance from the shim.
This way you completely avoid dealing with the System.Data types, and get on with your logic.