Linq and Guid

Discussion of open issues, suggestions and bugs regarding LinqConnect – Devart's LINQ to SQL compatible ORM
Post Reply
Phenix
Posts: 5
Joined: Mon 22 Oct 2012 16:11

Linq and Guid

Post by Phenix » Wed 07 Nov 2012 16:38

Hello,

I try to create a query with guid but I have an exception every time.

Trace :
(System.NotSupportedException) Cannot use "text" type value in "Guid" type argument
Trace :
at Devart.Data.Linq.Engine.DbMethodCallConverter.CheckConversionToParameterType (Devart.Data.Linq.Engine.SqlExpression argumentValue, System.Type parameterType) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.DbMethodCallConverter.a (Devart.Data.Linq.Engine.bc A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.a (Devart.Data.Linq.Engine.SqlNode A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.c (Devart.Data.Linq.Engine.SqlExpression A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.DbMethodCallConverter.a (Devart.Data.Linq.Engine.bc A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.a (Devart.Data.Linq.Engine.SqlNode A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.c (Devart.Data.Linq.Engine.SqlExpression A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.f (Devart.Data.Linq.Engine.SqlSelect A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.DbMethodCallConverter.a (Devart.Data.Linq.Engine.SqlSelect A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.a (Devart.Data.Linq.Engine.bl A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.DbMethodCallConverter.a (Devart.Data.Linq.Engine.bl A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.a (Devart.Data.Linq.Engine.SqlNode A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.e (Devart.Data.Linq.Engine.SqlNode A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.f (Devart.Data.Linq.Engine.SqlSelect A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.DbMethodCallConverter.a (Devart.Data.Linq.Engine.SqlSelect A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.a (Devart.Data.Linq.Engine.bl A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.DbMethodCallConverter.a (Devart.Data.Linq.Engine.bl A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.a (Devart.Data.Linq.Engine.SqlNode A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.e (Devart.Data.Linq.Engine.SqlNode A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.f (Devart.Data.Linq.Engine.SqlSelect A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.DbMethodCallConverter.a (Devart.Data.Linq.Engine.SqlSelect A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.a (Devart.Data.Linq.Engine.bl A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.DbMethodCallConverter.a (Devart.Data.Linq.Engine.bl A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.SqlVisitor.a (Devart.Data.Linq.Engine.SqlNode A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.ah.a (Devart.Data.Linq.Engine.SqlNode A_0, Devart.Data.Linq.Engine.z& A_1) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.ah.d (System.Linq.Expressions.Expression A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.ah.e (System.Linq.Expressions.Expression A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.DataProvider.a (System.Linq.Expressions.Expression A_0) [0x00000] in <filename unknown>:0
at Devart.Data.Linq.Engine.DataQuery`1[webservice.Library.Model.ESession].System.Linq.IQueryProvider.Execute[ESession] (System.Linq.Expressions.Expression expression) [0x00000] in <filename unknown>:0
at System.Linq.Queryable.Single[ESession] (IQueryable`1 source) [0x00006] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.Core/System.Linq/Queryable.cs:1143
at webservice.Controllers.EverController.OnActionExecuting (System.Web.Mvc.ActionExecutingContext filterContext) [0x001c4] in /Users/ramseyer_c/Projects/Ever/webservice/Controllers/EverController.cs:119
at System.Web.Mvc.Controller.System.Web.Mvc.IActionFilter.OnActionExecuting (System.Web.Mvc.ActionExecutingContext filterContext) [0x00000] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.Web.Mvc2/System.Web.Mvc/Controller.cs:569
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter (IActionFilter filter, System.Web.Mvc.ActionExecutingContext preContext, System.Func`1 continuation) [0x00000] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.Web.Mvc2/System.Web.Mvc/ControllerActionInvoker.cs:196
at System.Web.Mvc.ControllerActionInvoker+<InvokeActionMethodWithFilters>c__AnonStorey36+<InvokeActionMethodWithFilters>c__AnonStorey37.<>m__49 () [0x00000] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.Web.Mvc2/System.Web.Mvc/ControllerActionInvoker.cs:238
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters (System.Web.Mvc.ControllerContext controllerContext, IList`1 filters, System.Web.Mvc.ActionDescriptor actionDescriptor, IDictionary`2 parameters) [0x00066] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.Web.Mvc2/System.Web.Mvc/ControllerActionInvoker.cs:239
at System.Web.Mvc.ControllerActionInvoker.InvokeAction (System.Web.Mvc.ControllerContext controllerContext, System.String actionName) [0x00099] in /private/tmp/monobuild/build/BUILD/mono-2.10.9/mcs/class/System.Web.Mvc2/System.Web.Mvc/ControllerActionInvoker.cs:164
My query :

Code: Select all

Guid guid = Guid.Parse(key);
var query1 = from s in this.dbEver.ESession
    where s.Key == guid
    select s;
ESession session = query1.Single();
And in designer.cs :

Code: Select all

[Column(Name = @"""key""", Storage = "_Key", CanBeNull = false, DbType = "varchar(36) NOT NULL", IsPrimaryKey = true)]
public System.Guid Key
What is the problem ? I don't understand ... and I don't find anything on internet

Thanks

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Linq and Guid

Post by MariiaI » Thu 08 Nov 2012 14:41

Thank you for the report. We have reproduced this issue. We will investigate it and inform you about the results as soon as possible.
As a workaround you could try defining your primary key as 'uniqueidentifier' in the database tables.

Phenix
Posts: 5
Joined: Mon 22 Oct 2012 16:11

Re: Linq and Guid

Post by Phenix » Mon 12 Nov 2012 14:16

Hello,

I tried with an uuid and it works. Thanks.

But, it's sad that result from schema => database and database => schema is so different.
schema => database : Guid => varchar (36)
database => schema : Guid => uuid
Why Guid is not transform to Uuid ?

MariiaI
Devart Team
Posts: 1472
Joined: Mon 13 Feb 2012 08:17

Re: Linq and Guid

Post by MariiaI » Tue 13 Nov 2012 13:30

Please check the Server Data Type of the 'Key' property in your model. After you have changed its .NET type to GUID, you should change its server type to 'UNIQUEIDENTIFIER NOT NULL' instead of the varchar (36) type. In this case, when updating database from the model, the GUID type will be mapped to 'UNIQUEIDENTIFIER NOT NULL'.
Also, you could use the "Update Database From Model" wizard with the selected 'Regenerate Storage' check-box (by default, type GUID is mapped to 'uniqueidentifier').

Please tell us if this helps.

Phenix
Posts: 5
Joined: Mon 22 Oct 2012 16:11

Re: Linq and Guid

Post by Phenix » Tue 13 Nov 2012 16:41

Ok, I try.

Thanks

Post Reply