Tuesday 15 March 2011

Oracle ServiceStack.OrmLite Sqlxpression creates -



Oracle ServiceStack.OrmLite Sqlxpression creates -

given next definitions:

[alias("users")] public partial class user : ihasid<string> { [alias("user_id")] [required] public string id { get; set;} [required] public string username { get; set;} [required] public string password { get; set;} [required] public decimal activestatus { get; set;} [required] public datetime creationdate { get; set;} [required] public datetime lastmodifieddate { get; set;} [required] public datetime activatedate { get; set;} [required] public datetime deactivatedate { get; set;} [required] public decimal isactivedirectory { get; set;} [required] public string clientids { get; set;} } [alias("userprofiles")] public partial class userprofile : ihasid<decimal> { [alias("userprofileid")] [required] public decimal id { get; set;} [required] public decimal profileid { get; set;} [required] public string user_id { get; set;} [required] public decimal isprimary { get; set;} } [fact] public void canqueryusersecurity() { string connection = configurationmanager.appsettings["myconnkey"]; using (idbconnection db = connection.opendbconnection()) { var result = db.select<user>(q => q.leftjoin<user, userprofile>((user, profile) => user.id == profile.user_id) .where<user>(user => user.username == "sangee.ram") .where<userprofile>(profile => sql.in(profile.profileid, new[] { 1, 441, 442, 452 })) .limit(skip: 1, rows: 2)); assert.notnull(result); } }

results in exception beingness thrown.

debug: select * ( select "_ss_ormlite_1_".*, rownum rnum ( select users.user_id id, users.username, users."password", users.activestatus, users.creationdate, users.lastmodifieddate, users.activatedate, users.deactivatedate, users.isactivedirectory, users.clientids users left bring together userprofiles on (users.user_id = userprofiles.user_id) (users.username = 'sangee.ram') , userprofiles.profileid in (1,441,442,452) order user_id) "_ss_ormlite_1_" rownum <= 1 + 2) "_ss_ormlite_2_" "_ss_ormlite_2_".rnum > 1 oracle.dataaccess.client.oracleexceptionora-00918: column ambiguously defined @ oracle.dataaccess.client.oracleexception.handleerrorhelper(int32 errcode, oracleconnection conn, intptr opserrctx, oposqlvalctx* poposqlvalctx, object src, string procedure, boolean bcheck, int32 isrecoverable) @ oracle.dataaccess.client.oracleexception.handleerror(int32 errcode, oracleconnection conn, string procedure, intptr opserrctx, oposqlvalctx* poposqlvalctx, object src, boolean bcheck) @ oracle.dataaccess.client.oraclecommand.executereader(boolean requery, boolean fillrequest, commandbehavior behavior) @ oracle.dataaccess.client.oraclecommand.executedbdatareader(commandbehavior behavior) @ system.data.common.dbcommand.system.data.idbcommand.executereader() @ servicestack.ormlite.ormliteresultsfilterextensions.exprconverttolist(idbcommand dbcmd, string sql) @ servicestack.ormlite.ormliteexecfilter.exec(idbconnection dbconn, func`2 filter) @ lo.leads.ui.tests.usersecuritytests.canqueryusersecurity() in usersecuritytests.cs: line 35

it looks 'order user_id' needs aliased, , don't know plenty sqlexpression class modify it.

update

if take gen'd sql statement , alias 'order users.user_id' correctly, statement executes

thank you, stephen

oracle servicestack ormlite-servicestack

No comments:

Post a Comment