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
Post a Comment