BLToolkit provider for dotConnect
BLToolkit provider for dotConnect
Hi,
I believe there are quite a few people around who want to use BLToolkit with dotConnect. It looks like the author of BLToolkit is willing to add that provider to BLToolkit, but I think the fact that he has to pay for it is a show-stopper Any chance you can sort it out?
Here's the discussion on RSDN (in Russian):
http://www.rsdn.ru/forum/dotnet/4819447.flat
Cheers,
Andrew
I believe there are quite a few people around who want to use BLToolkit with dotConnect. It looks like the author of BLToolkit is willing to add that provider to BLToolkit, but I think the fact that he has to pay for it is a show-stopper Any chance you can sort it out?
Here's the discussion on RSDN (in Russian):
http://www.rsdn.ru/forum/dotnet/4819447.flat
Cheers,
Andrew
-
- Devart Team
- Posts: 2420
- Joined: Wed 02 Nov 2011 09:44
Re: BLToolkit provider for dotConnect
We will investigate the possibility to implement BLToolkit in dotConnect for Oracle, but we can't tell any timeframe at the moment.
Re: BLToolkit provider for dotConnect
BLToolkit's author says that all that he needs is the binaries and DevArt license (he needs that in order to build against your libraries, right?), he'll write the provider himself. Why don't you guys just give him the license? Sounds like a win-win to me!
http://rsdn.ru/forum/dotnet/4819447.flat
http://rsdn.ru/forum/dotnet/4819447.flat
-
- Devart Team
- Posts: 2420
- Joined: Wed 02 Nov 2011 09:44
Re: BLToolkit provider for dotConnect
Could you please tell us whether the dotConnect for Oracle Express Edition binaries will suit the BLToolkit's author?
Re: BLToolkit provider for dotConnect
Well, if I understand it correctly Express Edition uses Oracle Client to connect to the DB, but one of the main reasons for using DevArt is the direct mode. What would be the value of that BLToolkit provider if it won't be able to use the direct mode? Are you saying that both modes behave exactly the same?
Re: BLToolkit provider for dotConnect
Yes, I tend to agree with skalkin, it is the direct "driver-less" mode that makes dotConnect for Oracle very attractive. I can't tell whether the author of BLToolkit will be able to create a provider for dotConnect for Oracle using just the free Oracle Express edition. However, I am absolutely sure that the ability to use BLToolkit with dotConnect will lead to a noticeably wider acceptance of dotConnect among developers. I think granting a free license to the author of BLToolkit would be a very smart investment indeed
Re: BLToolkit provider for dotConnect
We have sent an email to the BLToolkit support team with an offer to include the licensed version of dotConnect for Oracle Professional (free of charge) in their tool. There is no response from BLToolkit.
Re: BLToolkit provider for dotConnect
dotConnect for Oracle data provider has been added to BLToolkit.
I found the following issues.
1. Milliseconds of DateTime value are truncated when DateTime is sent as a parameter.
2. Default data type for byte[] is Blob. Blobs are more restrictive than Raw.
These issues can be fixed in this way:
3. docConnect does not handle unicode characters properly.
The following test does not work:
Output:
Russian characters are OK, Chinese are failed.
I found the following issues.
1. Milliseconds of DateTime value are truncated when DateTime is sent as a parameter.
2. Default data type for byte[] is Blob. Blobs are more restrictive than Raw.
These issues can be fixed in this way:
Code: Select all
public override void AttachParameter(IDbCommand command, IDbDataParameter parameter)
{
var value = parameter.Value;
if (value is DateTime)
{
parameter.Value = new OracleTimeStamp((DateTime)value);
}
else if (value is Guid)
{
parameter.Value = ((Guid)value).ToByteArray();
parameter.DbType = DbType.Binary;
((OracleParameter)parameter).OracleDbType = OracleDbType.Raw;
}
base.AttachParameter(command, parameter);
}
The following test does not work:
Code: Select all
[Test]
public void Unicode()
{
ForEachProvider(new[] { ProviderName.Informix, ProviderName.Firebird, ProviderName.Sybase }, db =>
{
try
{
db.Person.Delete(p => p.ID > 2);
var id =
db.Person
.InsertWithIdentity(() => new Person
{
FirstName = "擊敗奴隸",
LastName = "Юникодкин",
Gender = Gender.Male
});
Assert.NotNull(id);
var person = db.Person.Single(p => p.FirstName == "擊敗奴隸" && p.LastName == "Юникодкин");
Assert.NotNull (person);
Assert.AreEqual(id, person.ID);
Assert.AreEqual("擊敗奴隸", person.FirstName);
Assert.AreEqual("Юникодкин", person.LastName);
}
finally
{
db.Person.Delete(p => p.ID > 2);
}
});
}
Code: Select all
Provider : DevartOraclePro
DbManager: -- DevartOraclePro Oracle
DELETE FROM
Person t1
WHERE
t1.PersonID > 2
DbManager: Execution time: 00:00:00.0185023. Records affected: 0.
DbManager: -- DevartOraclePro Oracle
INSERT INTO Person
(
FirstName,
LastName,
Gender
)
VALUES
(
'擊敗奴隸',
'Юникодкин',
'M'
)
RETURNING
PersonID INTO :IDENTITY_PARAMETER
DbManager: Execution time: 00:00:00.0515065
DbManager: -- DevartOraclePro Oracle
SELECT
p.PersonID as ID,
p.LastName,
p.MiddleName,
p.Gender,
p.FirstName
FROM
Person p
WHERE
ROWNUM <= 2 AND p.FirstName = '擊敗奴隸' AND p.LastName = 'Юникодкин'
DbManager: Execution time: 00:00:00.0085011
DbManager: -- DevartOraclePro Oracle
DELETE FROM
Person t1
WHERE
t1.PersonID > 2
DbManager: Execution time: 00:00:00.0005000. Records affected: 1.
String lengths are both 4. Strings differ at index 0.
Expected: "擊敗奴隸"
But was: "????"
-----------^
Re: BLToolkit provider for dotConnect
We have reproduced and are investigating the issues. Thank you for sharing the workaround you have found.megadude wrote:1. Milliseconds of DateTime value are truncated when DateTime is sent as a parameter.
2. Default data type for byte[] is Blob. Blobs are more restrictive than Raw.
Try using the "Unicode=true;" connection string parameter.megadude wrote:3. docConnect does not handle unicode characters properly.
If it doesn't help, send us a small ADO.NET test project (including the DDL script of the table) and specify the following information for reproducing:
a) the exact version of your Oracle server (xx.x);
b) the NLS_LANGUAGE, NLS_CHARACTERSET, and NLS_NCHAR_CHARACTERSET parameters of your Oracle server;
с) the name, version of your operating system and its regional settings: Control Panel > Reginal and Language Options > Language for non-Unicode programs.