I am starting to use the newest version of dotConnect for PostgreSql.
The environment is MVC 5 and Entity Framework 5.
My main problem is with the accents, if I get an entity, which fields contain accents, it returns the following string field:
"Teljesjogú Adminisztrátor"
Instead of this:
"Teljesjogú Adminisztrátor"
On the other hand if i insert a new row in postgresql with accents, there is no error. If I try to save an entity, which fields has accents like 'éáűőúöüó' with dotconnect, throws the following exception:
System.Data.Entity.Infrastructure.DbUpdateException occurred
InnerException: Devart.Data.PostgreSql.PgSqlException
HResult=-2147467259
Message=invalid byte sequence for encoding "UTF8": 0xe1 0x72 0x6f
Source=Devart.Data.PostgreSql
ErrorCode=-2147467259
CallStack=""
ColumnName=""
ConstraintName=""
DataTypeName=""
DetailMessage=""
ErrorSql=INSERT INTO "User"("Alias", "LastName", "FirstName", "Password", "PasswordValidTo", "DateOfBirth", "Email", "ZIPCode", "City", "Address", "DepartmentID", "State", "Created", "CreatedBy", "Modified", "ModifiedBy")
VALUES ($1, $2, $3, $4, NULL, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15)
RETURNING "ID"
FileName=src\backend\utils\mb\wchar.c
Hint=""
InternalPosition=""
InternalQuery=""
LineNumber=2020
Position=0
ProcedureName=report_invalid_encoding
SchemaName=""
TableName=""
StackTrace:
at Devart.Data.PostgreSql.PgSqlDataReader.f(Int32 A_0)
at Devart.Data.PostgreSql.PgSqlCommand.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords)
at Devart.Common.DbCommandBase.InternalExecute(CommandBehavior behavior, IDisposable stmt, Int32 startRecord, Int32 maxRecords, Boolean nonQuery)
at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery)
at Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
at Devart.Data.PostgreSql.Entity.d.a(CommandBehavior A_0)
at Devart.Common.Entity.i.b(CommandBehavior A_0)
at Devart.Data.PostgreSql.Entity.d.b(CommandBehavior A_0)
at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues)
at System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter)
My second problem is that I am using a custom Transaction partial class, that is part of my DbContextEntities instance (System.Data.Entity.DbContext). It contains an own transaction handling with the following code:
Code: Select all
private int _numberOfTransactions = 0;
private DbTransaction _transaction = null;
public DbTransaction Transaction
{
get
{
return _transaction;
}
}
public DbTransaction BeginTransaction()
{
return BeginTransaction(IsolationLevel.ReadCommitted);
}
public DbTransaction BeginTransaction(System.Data.IsolationLevel isolation)
{
if (this.Database.Connection.State == ConnectionState.Closed)
this.Database.Connection.Open();
if (_transaction == null)
{
_transaction = this.Database.Connection.BeginTransaction(isolation);
_numberOfTransactions = 1;
}
else
{
++_numberOfTransactions;
}
return _transaction;
}
public void CommitTransaction()
{
SaveChanges();
if (_transaction != null && _numberOfTransactions == 1)
{
_transaction.Commit();
_transaction.Dispose();
_transaction = null;
_numberOfTransactions = 0;
}
else if (_numberOfTransactions > 0)
{
--_numberOfTransactions;
}
}
public void RollbackTransaction()
{
if (_transaction != null && _transaction.Connection != null && _numberOfTransactions == 1)
{
_transaction.Rollback();
_transaction.Dispose();
_transaction = null;
_numberOfTransactions = 0;
}
else if (_numberOfTransactions > 0)
{
--_numberOfTransactions;
}
}
System.InvalidOperationException occurred
HResult=-2146233079
Message=Connection must be opened.
Source=Devart.Data
StackTrace:
at Devart.Common.Utils.CheckConnectionOpen(IDbConnection connection)
at Devart.Data.PostgreSql.PgSqlTransaction.Rollback()
at ...
I would like to thanks for all of your assistance in advance.