Page 1 of 1

Linq and Guid

Posted: Wed 07 Nov 2012 16:38
by Phenix
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

Re: Linq and Guid

Posted: Thu 08 Nov 2012 14:41
by MariiaI
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.

Re: Linq and Guid

Posted: Mon 12 Nov 2012 14:16
by Phenix
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 ?

Re: Linq and Guid

Posted: Tue 13 Nov 2012 13:30
by MariiaI
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.

Re: Linq and Guid

Posted: Tue 13 Nov 2012 16:41
by Phenix
Ok, I try.

Thanks