نحوه استفاده از دو دیتابیس در برنامه

vahdatkaneh

عضویت : 1398/08/23 پرسش ها : 26 پاسخ ها : 22

نحوه استفاده از دو دیتابیس در برنامه

ارسال شده در : ‫۲ ماه قبل، پنج شنبه ۱۰ بهمن ۱۳۹۸، ساعت ۱۳:۲۴

با سلام خدمت استاد گرامی من طبق سوالی که قبلا از خدمتتون پرسیده بودم برای کار با فایل و عکس ها می خوام از دوتا دیتابیس تو برنامم استفاده کنم 

الان که دیتابیس دوم رو اضافه کردم به اخطار System.Data.Entity.Core.EntityException: 'The underlying provider failed on Open  خوردم 

 

یه سرچی زدم ظاهرا به کانکشن استرینگم اخطار میده ولی نمیدونم باید چیکارش کنم

 

کانکشن استرینگی که برام ایجاد کرده

  <connectionStrings>
    <add name="VahdatSystemDBEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=VahdatSystemDB;persist security info=True;user id=sa;password=1;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
    <add name="VahdatSystemFileEntities" connectionString="metadata=res://*/FileModel.csdl|res://*/FileModel.ssdl|res://*/FileModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=VahdatSystemFile;persist security info=True;user id=sa;password=1;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

 

مدل دیتابیس ها تو فرم 

        ///////////////////////////////////////////////ارتباط با دیتابیس
        VahdatSystemDBEntities DbVahdat = new VahdatSystemDBEntities();
        VahdatSystemFileEntities DbVahdatFile = new VahdatSystemFileEntities();

 

متن کامل خطا

System.Data.Entity.Core.EntityException: The underlying provider failed on Open.
 ---> System.Data.SqlClient.SqlException: MSDTC on server 'SETABRAN-PC' is unavailable.\r\n   
 at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n   
 at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n  
 at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n   
 at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n
 at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n 
 at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n   at System.Data.SqlClient.TdsParser.TdsExecuteTransactionManagerRequest(Byte[] buffer, TransactionManagerRequestType request, String transactionName, TransactionManagerIsolationLevel isoLevel, Int32 timeout, SqlInternalTransaction transaction, TdsParserStateObject stateObj, Boolean isDelegateControlRequest)\r\n
 at System.Data.SqlClient.TdsParser.GetDTCAddress(Int32 timeout, TdsParserStateObject stateObj)\r\n
 at System.Data.SqlClient.SqlInternalConnectionTds.GetDTCAddress()\r\n
 at System.Data.SqlClient.SqlInternalConnection.EnlistNonNull(Transaction tx)\r\n
 at System.Data.SqlClient.SqlInternalConnection.Enlist(Transaction tx)\r\n
 at System.Data.SqlClient.SqlInternalConnectionTds.Activate(Transaction transaction)\r\n
 at System.Data.ProviderBase.DbConnectionInternal.ActivateConnection(Transaction transaction)\r\n
 at System.Data.ProviderBase.DbConnectionPool.PrepareConnection(DbConnection owningObject, DbConnectionInternal obj, Transaction transaction)\r\n
 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)\r\n
 at System.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)\r\n
 at System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)\r\n
 at System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)\r\n
 at System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)\r\n
 at System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry)\r\n   at System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)\r\n
 at System.Data.SqlClient.SqlConnection.Open()\r\n
 at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.<Open>b__36(DbConnection t, DbConnectionInterceptionContext c)\r\n 
 at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)\r\n 
 at System.Data.Entity.Infrastructure.Interception.DbConnectionDispatcher.Open(DbConnection connection, DbInterceptionContext interceptionContext)\r\n
 at System.Data.Entity.Core.EntityClient.EntityConnection.<Open>b__2()\r\n
 at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0()\r\n
 at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n
 at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)\r\n
 at System.Data.Entity.Core.EntityClient.EntityConnection.Open()\r\n
 --- End of inner exception stack trace ---\r\n
 at System.Data.Entity.Core.EntityClient.EntityConnection.Open()\r\n
 at System.Data.Entity.Core.Objects.ObjectContext.EnsureConnection(Boolean shouldMonitorTransactions)\r\n
 at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)\r\n
 at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass4b.<ExecuteFunction>b__49()\r\n
 at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)\r\n
 at System.Data.Entity.Core.Objects.ObjectContext.ExecuteFunction(String functionName, ObjectParameter[] parameters)\r\n
 at DataModelLayer.VahdatSystemFileEntities.Sp_tblPersenelAx_ins(Nullable`1 persenelID, Nullable`1 perseneShomare, Byte[] persenelAx, Nullable`1 userIdRef) in E:\\Kaneh\\vahdat Amozesh\\C#\\VahdatSystem\\VahdatSystem\\VahdatSystem\\DataModelLayer\\FileModel.Context.cs:line 50\r\n
 at VahdatSystem.windows.Win_PersenelEdit.Save() in E:\\Kaneh\\vahdat Amozesh\\C#\\VahdatSystem\\VahdatSystem\\VahdatSystem\\VahdatSystem\\windows\\Win_PersenelEdit.xaml.cs:line 650"

 

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 10613
ارسال شده در :‫۲ ماه قبل، پنج شنبه ۱۰ بهمن ۱۳۹۸، ساعت ۱۳:۲۴
0 تشکر

vahdatkaneh

عضویت : 1398/08/23 پرسش ها : 26 پاسخ ها : 22
ارسال شده در :‫۲ ماه قبل، پنج شنبه ۱۰ بهمن ۱۳۹۸، ساعت ۱۳:۳۲

آقای مدائنی ممنون از لطفتون

اگه امکان داره کمی بیشتر توضیح بدین متوجه نشدم 

متاسفانه زبانم صفر و تازه کارهم هستم 

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 10613
ارسال شده در :‫۲ ماه قبل، پنج شنبه ۱۰ بهمن ۱۳۹۸، ساعت ۱۳:۴۳

شما باید دو تا مدل بسازید یکی بانک اول و دومی بانک دوم ، فقط مراقب باشید نام ها یکی نباشه 

0 تشکر

vahdatkaneh

عضویت : 1398/08/23 پرسش ها : 26 پاسخ ها : 22
ارسال شده در :‫۲ ماه قبل، پنج شنبه ۱۰ بهمن ۱۳۹۸، ساعت ۱۴:۵۴

 

همین کار رو کردم

منظورتون همین هستش دیگه

تست ارتباط هم گرفتم درسته

0 تشکر

vahdatkaneh

عضویت : 1398/08/23 پرسش ها : 26 پاسخ ها : 22
ارسال شده در :‫۲ ماه قبل، پنج شنبه ۱۰ بهمن ۱۳۹۸، ساعت ۱۵:۴۸

ببخشید استاد 

الان من یه تست دیگه کرم 

دیتابیس دوم رو تو موقع ذخیره به اخطار میخورد فقط استفاده کردم 

 

حالا اومدم یه فرم جدید درست کردم و دیتاگرید رو باید کردم به تیبلی که توو اون دیتابیس دومم هستش بدون مشکل اطلاعات رو میاره 

ینی کانکشن استرینگم مشکلی نداره دیگه ؟

درسته ؟

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 10613
ارسال شده در :‫۲ ماه قبل، پنج شنبه ۱۰ بهمن ۱۳۹۸، ساعت ۱۶:۰۶

بله ممکنه از رشته اتصال باشه 

 

0 تشکر

vahdatkaneh

عضویت : 1398/08/23 پرسش ها : 26 پاسخ ها : 22
ارسال شده در :‫۲ ماه قبل، پنج شنبه ۱۰ بهمن ۱۳۹۸، ساعت ۱۶:۱۸

منظورتون دستور ذخیره هستش 

من با SP انجام میدم

                    DbVahdatFile.Sp_tblPersenelAx_ins(
                    Convert.ToInt16(PersenelIDPI),
                    Convert.ToInt16(txtPerseneShomare.Text.Trim()),
                    imgByteArr,
                    Convert.ToInt16(PublicVariable.gUserId));
                    DbVahdatFile.SaveChanges();

 

USE [VahdatSystemFile]
GO
/****** Object:  StoredProcedure [dbo].[Sp_tblPersenelAx_ins]    Script Date: 1/30/2020 4:16:49 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Procedure [dbo].[Sp_tblPersenelAx_ins]
@PersenelID smallint  ,
@PerseneShomare smallint ,
@PersenelAx varbinary(max) ,
@UserIdRef smallint 
As
insert into tblPersenelAx
( PerseneShomare, PersenelAx, UserIdRef  )
values
( @PerseneShomare, @PersenelAx, @UserIdRef )

 

چه کنم استاد جان موندم چیکار کنم

 

 

 

0 تشکر

ایمان مدائنی

عضویت : 1396/09/10 پرسش ها : 5 پاسخ ها : 10613
ارسال شده در :‫۲ ماه قبل، پنج شنبه ۱۰ بهمن ۱۳۹۸، ساعت ۱۶:۵۵

منظورم connection string بود 

باید دقیق بررسی کنید اگر هنوز تسلط ندارید با ۱ بانک کار کنید

0 تشکر

vahdatkaneh

عضویت : 1398/08/23 پرسش ها : 26 پاسخ ها : 22
ارسال شده در :‫۲ ماه قبل، جمعه ۱۱ بهمن ۱۳۹۸، ساعت ۰۹:۳۱

بیخیال دوتا دیتابیس شدم

جدولی فایل ها و عکس هارو توو دیتا بیس اصلی ایجاد کردم 

تا بعد اگه یاد گرفتم دوتاش میکنم 

ممنون از راهنمایهاتون استاد عزیز 

0 تشکر

برای ارسال پاسخ باید وارد شوید و یا در سایت عضو شوید