scope.Remove should handle IEnumerable parameter to delete collections
- ObjectScope and ObjectConatiner have a remove method that allows to
remove single persistent objects and an IEnumerator to remove
collections. Because of the .NET IEnumerable/IEnumerator pattern this
is not a good API. Remove should handle IEnumerable as well.
Better error message if querying for structs
- You cannot compare a struct reference directly, you have to use one
of the struct fields to compare to in a query. The problem is, that the
exception is thrown too late and had a missleading text. This has been
improved now. VOA-1919 Reverse Engineering: Suppress MON$ tables from
beeing seen by the reverse engineering process This avoid non-user
tables to be displayed during rev engineering.
MS SQL Server not connectable with the default settings
- Using a MS SQL Server should be very easy, the default installation
with enabled firewall should just work. Test connection in the enable
project wizard as well as reverse engineering has to work. We are now
using the same connection string as VS.
Oracle: Using AUTOINC key generator for id fields behaves correctly during runtime.
- This allows key sequences to be used in the database, but the schema
update process is not aware of sequences and does not write them.
OpenAccess DataContext for ADO.NET DataServices
- ADO.NET DataServices needs an IUpdateable implementation. OpenAccess
has now an example class as source code showing how to implement a
DataService directly against OpenAccess. The description is part of the
source code.
LINQ: Count property filter condition on collection fields pushed to server side
- It is possible to filter on the count of instances in a collection.
The count expression uses a count(*) query on server side now. Example:
from x in scope.Extent
where x.Addresses.Count == 0 select x;
Fixes
Setting instance name and tcp port is not working - If you specify the tcp port and an instance name the port setting is not detected by our connection string parser.
Reverse engineering crashes with null reference exception
- If a database table or field name has only digits and special chars
as name, the reverse engineering wizard crashes because it can not
generate a proper class or field name. The Workaround is to just add
some normal character to the name.
Old reverse mapping file can not be red
- If a reverse mapping file is reused that is generated prior the 4.4
version it will throw an null reference exception during load.
LINQ: Selecting a single value into a new anonymous type fails with conversion exception
- An expression like var res = from p in ext where p.Name.Matches("*")
group p by p into g select new { m = g.Max( c => c.Birthday) };
failed because the new anonymous type could not be filled with the
selected database value.
Schema Migration/MSSQL: Changing the type or length of a column can lead to an invalid DDL script - The error shows up as a 'column not found' message from the SQL server.
Visual Studio: Using a project type 'Database' can lead to problems when designing a new DataForm - Workaround: Unload the database project first, do the action, reload the database project into the solution.
OpenAccessDataSource does not report the id fields during designtime
- This leads to update not possible exception if a data in the ui is
changed. The workaround is to specify the DataKeyNames list by hand.
MySQL reverse engineering not working - Starting reverse engineering of a MySQL db throws a 'Not a DBConnection' error.
Configuration: Using the ordering collection field extension produces a null reference exception - Using the extension to sort inversly held collections gives a null reference exception.
Reverse Engineering does not delete removed fields from mapping
- If the reverse engineering wizard is started a second time and a
field is removed the generated mapping file still contains mapping for
this field and you get a runtime error.
LINQ: Using Skip()/Take() and Count() can lead to inconsistent results
- Using paging functionality with Queryable.Count() can cause the
calculation for the size of the unpaged result (GetTotalCount())
instead of the size of the page.
LINQ: Using Visual Basic comparison operators gives exception
- When using the VB string comparison operators like <> an
exception is thrown. Workaround: Using the .Net Framework
String.Equals() method.
LINQ: Enum support
- There was a problem when using enum valued persistent
fields/properties with LINQ which showed up as an exception ".... is
not a reference to another PC class" caused by a Convert node in the
LINQ expression tree.
Firebird: NullReferenceException during schema update - A NPE could occur on empty databases when the database schema is migrated.
Container.CopyTo throws index out of bound exception - filling the container with a classe hierarchy can throw an index out of bound exception.
ObjectContainer uses Retrieve in CopyTo
- Call Retrieve means that the Retrieve Fetch Plan with depth 3 will be
used. In some user model this will generated to long and to complex SQL
statements. This has now been modified so that only a fetch depth of 1
is used.