Hi Giacomo,
this would be a great opportunity to DbLinq if you could contribute to it.
I wrote some documentation that you can find at
http://linq.to/db/documentation. There is an overview, but it is a real
over-view (from very high :))

I'd answer to stable features by telling you what's unstable or still not
implemented:
- complex subexpressions (involving EntitySets): not implemented.
- cascading: not implemented.
- and a lot of SQL specific features

You can find all unit tests results at page http://linq.to/db/Tests
This will probably help you to see what's done and what's not:
- If it doesn't work for all databases, then it's a missing engine feature
- if it works for a few databases, then it's either to specific to these
databases, or not implemented for the others.

Regarding the support you could get:
- Me (I wrote the current SQL generation engine, and refactored almost all
the code... And I like that :)), probably available regularly and at least
capable to answer to most of your questions, general or technical.
- The Mono guys (Atsushi Eno, maybe Pablo IƱigo Blasco, he wrote a lot of
unit tests and did a lot of work for the project, too).

I had no contact recently with Mono people, so I can't even tell the status
of Mono and their overall strategy.

Since LINQ to SQL won't probably be maintained anymore by Microsoft, and
since LINQ to Entities (the ADO Entity Framework) doesn't appear to be much
convincing until now, there may be some future for DbLinq... If we work on
it hard enough :)

Pascal.

jabber/gtalk: [email protected]
msn: [email protected]



On Fri, Feb 27, 2009 at 12:19, [email protected] <[email protected]> wrote:

>
> I'm evaluating DbLinq for production use against Oracle (and possibly
> SQL server) backend in a Microsoft environment (no Mono/Linux, yet).
>
> If we will choise to invest on it we will dedicate some effort to the
> project too.
>
> Since our customer require reliability, we absolutely need to reach a
> stable (yet quite rich) set of functionality to build application upon
> during the next 2/3 years.
>
> Since that, I've got a look to the code (from svn).
> So I think DbLinq need:
>
> - a better documentation about the overall architecture (absolutely
> urgent, to allow developers to help)
> - a catalogue of the stable features provided by the different
> providers.
>
> BTW, since to evaluate the use of DbLinq I need to know it a bit more,
> I'd like to get involved too.
>
>
> Actually I've noticed some bugs that I'm tring to fix (but with little
> success, the appointed to me the need of better architecture and core
> documentation)
> As you could understand, to choice a tecnology upon which build
> complex multi layer applications for the next 2 years, I need to
> undestand also which support we could get from the community, and how
> easily we could fix the bug we will encounter (obviously sending fix
> back to the comunity too...)
>
>
> Can you give me a more general overview?
>
>
> Giacomo Tesio
>
>
> PS: actually I'm working on
> BUG 1:
>
>             var res = from product in db.Products
>                       join detail in db.OrderDetails on
> product.ProductID equals detail.ProductID
>                       join order in db.Orders on detail.OrderID
> equals order.OrderID
>                       select product;
>
> Exception thrown:
> System.Reflection.TargetInvocationException was unhandled
>  Message="Exception has been thrown by the target of an invocation."
>  Source="mscorlib"
>  StackTrace:
>       at System.RuntimeMethodHandle._InvokeMethodFast(Object target,
> Object[] arguments, SignatureStruct& sig, MethodAttributes
> methodAttributes, RuntimeTypeHandle typeOwner)
>       at System.RuntimeMethodHandle.InvokeMethodFast(Object target,
> Object[] arguments, Signature sig, MethodAttributes methodAttributes,
> RuntimeTypeHandle typeOwner)
>       at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,
> BindingFlags invokeAttr, Binder binder, Object[] parameters,
> CultureInfo culture, Boolean skipVisibilityChecks)
>       at System.Reflection.RuntimeMethodInfo.Invoke(Object obj,
> BindingFlags invokeAttr, Binder binder, Object[] parameters,
> CultureInfo culture)
>       at System.Reflection.RuntimePropertyInfo.SetValue(Object obj,
> Object value, BindingFlags invokeAttr, Binder binder, Object[] index,
> CultureInfo culture)
>       at System.Reflection.RuntimePropertyInfo.SetValue(Object obj,
> Object value, Object[] index)
>       at DbLinq.Data.Linq.DataContext.SetEntitySetsQueries(Object
> entity) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \DataContext.cs:line 389
>       at DbLinq.Data.Linq.DataContext._GetOrRegisterEntity(Object
> entity) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \DataContext.cs:line 319
>       at DbLinq.Data.Linq.DataContext.Register(Object entity, Type
> asType) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \DataContext.cs:line 496
>       at
> DbLinq.Data.Linq.Sugar.Implementation.QueryRunner.<Select>d__0`1.MoveNext
> () in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar
> \Implementation\QueryRunner.cs:line 137
>       at System.Collections.Generic.List`1..ctor(IEnumerable`1
> collection)
>       at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
>       at DbLinq.Mssql.Example.Program.Main(String[] args) in C:
> \Projects\Labs\Linq\DbLinq\examples\DbLinq.Mssql.Example
> \Program.cs:line 51
>       at System.AppDomain._nExecuteAssembly(Assembly assembly, String
> [] args)
>       at System.AppDomain.ExecuteAssembly(String assemblyFile,
> Evidence assemblySecurity, String[] args)
>       at
> Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>       at System.Threading.ThreadHelper.ThreadStart_Context(Object
> state)
>       at System.Threading.ExecutionContext.Run(ExecutionContext
> executionContext, ContextCallback callback, Object state)
>       at System.Threading.ThreadHelper.ThreadStart()
>  InnerException: System.NullReferenceException
>       Message="Object reference not set to an instance of an object."
>       Source="DbLinq.Mssql.Example"
>       StackTrace:
>            at nwind.Product.set_OrderDetails(EntitySet`1 value) in C:
> \Projects\Labs\Linq\DbLinq\examples\DbLinq.Mssql.Example\nwind
> \Northwind.cs:line 2492
>
> BUG 2 (adding any where)
>
>             var res = from product in db.Products
>                       join detail in db.OrderDetails on
> product.ProductID equals detail.ProductID
>                       join order in db.Orders on detail.OrderID
> equals order.OrderID
>                       where order.CustomerID == "ID123"
>                       select product;
>
> Exception thrown:
> System.NullReferenceException was unhandled
>  Message="Object reference not set to an instance of an object."
>  Source="System.Core"
>  StackTrace:
>       at System.Linq.Expressions.Expression.AreReferenceAssignable
> (Type dest, Type src)
>       at System.Linq.Expressions.Expression.ValidateNewArgs
> (ConstructorInfo constructor, ReadOnlyCollection`1& arguments,
> ReadOnlyCollection`1 members)
>       at System.Linq.Expressions.Expression.New(ConstructorInfo
> constructor, IEnumerable`1 arguments, IEnumerable`1 members)
>       at
>
> DbLinq.Data.Linq.Sugar.ExpressionMutator.Implementation.NewExpressionMutator.Mutate
> (IList`1 operands) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \Sugar\ExpressionMutator\Implementation\NewExpressionMutator.cs:line
> 54
>       at
>
> DbLinq.Data.Linq.Sugar.ExpressionMutator.ExpressionMutatorExtensions.ChangeOperands
> [T](T expression, IList`1 operands, Boolean checkForChanges) in C:
> \Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar\ExpressionMutator
> \ExpressionMutatorExtensions.cs:line 79
>       at
>
> DbLinq.Data.Linq.Sugar.ExpressionMutator.ExpressionMutatorExtensions.ChangeOperands
> [T](T expression, IList`1 operands) in C:\Projects\Labs\Linq\DbLinq\src
> \DbLinq\Data\Linq\Sugar\ExpressionMutator
> \ExpressionMutatorExtensions.cs:line 116
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeOperator
> (Expression expression, BuilderContext builderContext) in C:\Projects
> \Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
> \ExpressionDispatcher.Analyzer.cs:line 838
>       at
>
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeNewOperator
> (Expression expression, BuilderContext builderContext) in C:\Projects
> \Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
> \ExpressionDispatcher.Analyzer.cs:line 857
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
> (Expression expression, IList`1 parameters, BuilderContext
> builderContext) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \Sugar\Implementation\ExpressionDispatcher.Analyzer.cs:line 126
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
> (Expression expression, BuilderContext builderContext) in C:\Projects
> \Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
> \ExpressionDispatcher.Analyzer.cs:line 72
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeLambda
> (Expression expression, IList`1 parameters, BuilderContext
> builderContext) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \Sugar\Implementation\ExpressionDispatcher.Analyzer.cs:line 518
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
> (Expression expression, IList`1 parameters, BuilderContext
> builderContext) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \Sugar\Implementation\ExpressionDispatcher.Analyzer.cs:line 82
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeQuote
> (Expression piece, IList`1 parameters, BuilderContext builderContext)
> in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar
> \Implementation\ExpressionDispatcher.Analyzer.cs:line 811
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
> (Expression expression, IList`1 parameters, BuilderContext
> builderContext) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \Sugar\Implementation\ExpressionDispatcher.Analyzer.cs:line 86
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeJoin
> (IList`1 parameters, TableJoinType joinType, BuilderContext
> builderContext) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \Sugar\Implementation\ExpressionDispatcher.Analyzer.cs:line 991
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeJoin
> (IList`1 parameters, BuilderContext builderContext) in C:\Projects\Labs
> \Linq\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
> \ExpressionDispatcher.Analyzer.cs:line 940
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeCall
> (MethodInfo method, IList`1 parameters, BuilderContext builderContext)
> in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar
> \Implementation\ExpressionDispatcher.Analyzer.cs:line 159
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.AnalyzeCall
> (MethodCallExpression expression, IList`1 parameters, BuilderContext
> builderContext) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \Sugar\Implementation\ExpressionDispatcher.Analyzer.cs:line 142
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
> (Expression expression, IList`1 parameters, BuilderContext
> builderContext) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \Sugar\Implementation\ExpressionDispatcher.Analyzer.cs:line 80
>       at
> DbLinq.Data.Linq.Sugar.Implementation.ExpressionDispatcher.Analyze
> (Expression expression, Expression parameter, BuilderContext
> builderContext) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq
> \Sugar\Implementation\ExpressionDispatcher.Analyzer.cs:line 67
>       at
> DbLinq.Data.Linq.Sugar.Implementation.QueryBuilder.BuildExpressionQuery
> (ExpressionChain expressions, Expression tableExpression,
> BuilderContext builderContext) in C:\Projects\Labs\Linq\DbLinq\src
> \DbLinq\Data\Linq\Sugar\Implementation\QueryBuilder.cs:line 225
>       at
> DbLinq.Data.Linq.Sugar.Implementation.QueryBuilder.BuildExpressionQuery
> (ExpressionChain expressions, BuilderContext builderContext) in C:
> \Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
> \QueryBuilder.cs:line 193
>       at
> DbLinq.Data.Linq.Sugar.Implementation.QueryBuilder.BuildExpressionQuery
> (ExpressionChain expressions, QueryContext queryContext) in C:\Projects
> \Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
> \QueryBuilder.cs:line 87
>       at
> DbLinq.Data.Linq.Sugar.Implementation.QueryBuilder.GetSelectQuery
> (ExpressionChain expressions, QueryContext queryContext) in C:\Projects
> \Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Sugar\Implementation
> \QueryBuilder.cs:line 391
>       at DbLinq.Data.Linq.Implementation.QueryProvider`1.GetQuery
> (Expression expression) in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data
> \Linq\Implementation\QueryProvider.cs:line 100
>       at DbLinq.Data.Linq.Implementation.QueryProvider`1.GetEnumerator
> () in C:\Projects\Labs\Linq\DbLinq\src\DbLinq\Data\Linq\Implementation
> \QueryProvider.cs:line 122
>       at System.Collections.Generic.List`1..ctor(IEnumerable`1
> collection)
>       at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
>       at DbLinq.Mssql.Example.Program.Main(String[] args) in C:
> \Projects\Labs\Linq\DbLinq\examples\DbLinq.Mssql.Example
> \Program.cs:line 52
>       at System.AppDomain._nExecuteAssembly(Assembly assembly, String
> [] args)
>       at System.AppDomain.ExecuteAssembly(String assemblyFile,
> Evidence assemblySecurity, String[] args)
>       at
> Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
>       at System.Threading.ThreadHelper.ThreadStart_Context(Object
> state)
>       at System.Threading.ExecutionContext.Run(ExecutionContext
> executionContext, ContextCallback callback, Object state)
>       at System.Threading.ThreadHelper.ThreadStart()
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"DbLinq" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/dblinq?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to