首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORMLite方言

ORMLite方言
EN

Stack Overflow用户
提问于 2012-12-04 21:40:46
回答 1查看 1.4K关注 0票数 0

我已经遵循了给这个question的答案,但是仍然有一个错误。错误是:

{System.Data.SqlClient.SqlException (0x80131904):无效的对象名称'dual‘。在System.Data.SqlClient.SqlConnection.OnError(SqlException异常下,System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj上的布尔breakConnection、Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction)、System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、SqlCommand cmdHandler、cmdHandler cmdHandler、SqlDataReader dataStream、cmdHandler breakConnection、Boolean& dataStream)( at at ds,,( String resetOptionsString) )在System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior runBehavior,布尔returnStream,布尔异步,Int32超时值,任务和任务,布尔asyncWrite) at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior runBehavior,Boolean returnStream,String method,TaskCompletionSource returnStream 1 runBehavior,en21)在en3# 164 at en22#中ServiceStack.OrmLite.OrmLiteDialectProviderBase1.ToInsertRowStatement(Object objWithProperties, IDbCommand command) in C:\src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\OrmLiteDialectProviderBase.cs:line 439 at ServiceStack.OrmLite.OrmLiteWriteExtensions.Insert[T](IDbCommand dbCmd, T[] objs) in C:\src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\OrmLiteWriteExtensions.cs:line 394 at ServiceStack.OrmLite.OrmLiteWriteConnectionExtensions.<>c__DisplayClass421.b__41(IDbCommand ),C:\src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\OrmLiteConnectionFactory.cs:line 171at ServiceStack.ServiceInterface.Auth.OrmLiteAuthRepository.CreateUserAuth(UserAuth newUser中的操作1 filter) in C:\src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\Expressions\ReadConnectionExtensions.cs:line 55 at ServiceStack.OrmLite.OrmLiteWriteConnectionExtensions.Insert[T](IDbConnection dbConn, T[] objs) in C:\src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\OrmLiteWriteConnectionExtensions.cs:line 164 at ServiceStack.ServiceInterface.Auth.OrmLiteAuthRepository.<>c__DisplayClass5.<CreateUserAuth>b__4(IDbConnection db) at ServiceStack.OrmLite.OrmLiteConnectionFactoryExtensions.Run[T](IDbConnectionFactory connectionFactory, Func2 runDbCommandsFn(字符串密码)(应ServiceStack.ServiceInterface.Auth.RegistrationService.OnPost(Registration请求))(应ServiceStack.ServiceInterface.RestServiceBase`1.Post(TRequest请求)) ClientConnectionId:55977ae9-775d-474f-a543-d4cdfeb66a0d}

我正在设置以下代码:

代码语言:javascript
复制
private void ConfigureAuth(Funq.Container container)
{
   ...
   //Create a DB Factory configured to access the UserAuth SQL Server DB
   var connStr = appSettings.Get("SQLSERVER_CONNECTION_STRING", //AppHarbor or Local connection string
   ConfigUtils.GetConnectionString("UserAuth"));
   container.Register<IDbConnectionFactory>(
                new AuthDBConnectionFactory(connStr, //ConnectionString in Web.Config
                SqlServerOrmLiteDialectProvider.Instance)
                {
                    ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current)
                });

        //Store User Data into the referenced SqlServer database
    container.Register<IUserAuthRepository>(c =>
            new OrmLiteAuthRepository(c.Resolve<IDbConnectionFactory>())); //Use OrmLite DB Connection to persist the UserAuth and AuthProvider info

     var authRepo = (OrmLiteAuthRepository)container.Resolve<IUserAuthRepository>();
...
}

稍后,我建立了与oracle服务器上的空缺数据库的连接:

代码语言:javascript
复制
private void ConfigureVacancies(Funq.Container container)
{
...
var connStr = appSettings.Get ("VACANCIES_CONNECTION_STRING", //AppHarbor or Local connection string
            ConfigUtils.GetConnectionString("VacanciesDB"));

var dbFactory = (OrmLiteConnectionFactory)container.Resolve<IDbConnectionFactory>();

dbFactory.RegisterConnection("vacancies",  connStr, ServiceStack.OrmLite.Oracle.OracleDialect.Provider);
...
}

到空缺数据库的连接工作正常,但是当我试图在auth数据库上注册一个用户时,我会得到上面的错误。在我看来,它似乎在坚持甲骨文方言?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-09 08:19:39

我已经在连接工厂中使用了自动处理连接来设置setGlobalConnection变量:

代码语言:javascript
复制
public void RegisterConnection(string connectionKey, string connectionString, IOrmLiteDialectProvider dialectProvider, bool autoDisposeConnection = true)
{
        NamedConnections[connectionKey] = new OrmLiteConnectionFactory(connectionString, autoDisposeConnection, dialectProvider, autoDisposeConnection);
}

这是故意的吗?我修改了代码,将autoDisposeConnection设置为False,这解决了我的方言问题,并允许服务堆栈查询Oracle和MS。我还没有完全弄清楚将autoDisposeConnection设置为false的后果是什么。不过,我所有的测试现在都通过了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13712437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档