c# - Stored procedure parameter names and Entity Framework -


i've generated entity framework model sql server 2005 database , started import stored procedures. far good, 1 of stored procedures throws exception when try run it:

procedure or function 'csp_getcoworker' expects parameter '@@firstname', not supplied.

here signature stored procedure:

alter procedure [dbo].[csp_getcoworker]( @@firstname nvarchar(32), @@lastname nvarchar(32), @@businessarea nvarchar(512), @@location nvarchar(512) ) 

and here code generated entity framework

objectparameter p_firstnameparameter; if (p_firstname != null) {     p_firstnameparameter = new objectparameter("p_firstname", p_firstname); }     else {      p_firstnameparameter = new objectparameter("p_firstname", typeof(global::system.string)); } [...] return base.executefunction<csp_getcoworker_result2>("csp_getcoworker", p_firstnameparameter, p_lastnameparameter, p_businessareaparameter, p_locationparameter); 

is double @-characters in parameter name that's messing things up?

i tested because uncommon scenario.

the stored procedure follows strange naming convention because @@ should not used. default used sql server system variables , should not used else. using @x parameter of stored procedure defines parameter x using @@x define parameter @x - @ part of parameter name!

this big problem in c# because @ escape character used define names of variables same reserved keywords. example:

string @string = "abc"; 

defines variable named string. variable name cannot start @.

entity framework deals replacing @ _ , prefixing parameter's name p directly in ssdl. reason function imports created ssdl mapped stored procedure must have parameters same name procedure in same time @ not allowed starting character. if try modify edmx manually fail own xsd validation because @ not allowed starting character identifiers defined in csdl.

even can considered bug more missing possibility change name of parameter in csdl. @ moment design , way correct names of parameters in sql stored procedure.


Comments