PDA

View Full Version : سوال: مجبور کردن دیتا ست تا connection string را از web config بخواند



m_u3fi
سه شنبه 29 شهریور 1390, 10:48 صبح
من یه دیتا ست دارم که به درستی کار میکنه حالا به خاطر اینکه در چند جای پروژه connection string نداشته باشم میخوام مثل بقیه دستورهام، دیتا ست هم connection string را از web config بخونه
تو Designer رو دستکاری کردم و connection string رو تغییر دادم و درست هم کار کرد اما به محض build کردن connection string با مقدار قبلی ست میشه
حالا نمی دونم باید چه کارش کنم لطفا کمک کنید

fakhravari
سه شنبه 29 شهریور 1390, 12:28 عصر
در وب web config

<connectionStrings>
<add name="DatabaseCenter" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseCenter;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>


برای فراخوانی در برنامه

SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionSt rings["DatabaseCenter"].ToString());

m_u3fi
سه شنبه 29 شهریور 1390, 14:21 عصر
ممنون از پاسختون
ولی من دیتا ست رو دستی ننوشتم که بتونم از این کد

SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionSt rings["DatabaseCenter"].ToString());


استفاده کنم
طبق چیزایی که خوندم باید در DataSet1.xsd این جوری بنویسم


<DataSourceDefaultConnectionIndex="0"FunctionsComponentName="QueriesTableAdapter"Modifier="AutoLayout, AnsiClass, Class, Public"SchemaSerializationMode="IncludeSchema"xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
ConnectionAppSettingsObjectName="Settings"AppSettingsPropertyName="daamConnectionString"ConnectionStringObject=""IsAppSettingsProperty="true"Modifier="Assembly"Name<ConnectionAppSettingsObjectName="Web.config"AppSettingsPropertyName="classifiedsConnection"ConnectionStringObject=""IsAppSettingsProperty="true"Modifier="Assembly"Name="classifiedsConnection (Web.config)"ParameterPrefix="@"PropertyReference="AppConfig.System.Configuration.ConfigurationManage r.0.AppSettings.ConnectionString"Provider="System.Data.SqlClient">
</Connection>

</Connections>



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


PropertyReference="AppConfig.System.Configuration.ConfigurationManage r.0.AppSettings.ConnectionString"


میگیره آخه connection string من تو appSettings web.config هست

fakhravari
سه شنبه 29 شهریور 1390, 17:30 عصر
شاید زمانی استفاده کرد از این دیتاست
که یه دیتابیس دیگه توی برنامه بوده یا فیلدیو دستکاری کردی .
خوب وقتی از این دیتاست استفاده میکنی از یه جه باید به بانک وصل باشه
کد کانکت در دیتاست

<Connections>
<Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="DatabaseCenterConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="DatabaseCenterConnectionString (Web.config)" ParameterPrefix="@" PropertyReference="AppConfig.System.Configuration.ConfigurationManage r.0.ConnectionStrings.DatabaseCenterConnectionStri ng.ConnectionString" Provider="System.Data.SqlClient" />
</Connections>

m_u3fi
چهارشنبه 30 شهریور 1390, 08:54 صبح
در واقع موقع استفاده از این کد ها این خطا رو میده

Error 103 Custom tool error: Requested value 'ConfigurationManager' was not found.

البته من System.dll , System.configuration.dll رو به refrence هام اضافه کردم با این حال هنوز error میده در ضمن از VS2008 استفاده میکنم و در کد cs. این ConfigurationManager رو میاره ولی در DataSet1.xsd پیغام بالا رو میده

fakhravari
چهارشنبه 30 شهریور 1390, 15:26 عصر
ببین توی قسمت xsd توی فایل xlm
باید این مسر باشه

<Connections>
<Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="DatabaseCenterConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="DatabaseCenterConnectionString (Web.config)" ParameterPrefix="@" PropertyReference="AppConfig.System.Configuration.ConfigurationManage r.0.ConnectionStrings.DatabaseCenterConnectionStri ng.ConnectionString" Provider="System.Data.SqlClient" />
</Connections>


و توی فایل web.config باید این کد باشه

<connectionStrings>
<add name="DatabaseCenterConnectionString" connectionString="Data Source=.\sqlexpress;Initial Catalog=DatabaseCenter;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>

m_u3fi
دوشنبه 04 مهر 1390, 10:10 صبح
ممنون از همراهی تون
خوب با تغییراتی که دادم error برطرف نشد

Error 101 Custom tool error: Failed to generate code. Failed to generate code. The type name:"System.Configuration. ConfigurationManager" on the property:"BaseType" of type:"System.CodeDom.CodeTypeReference" is not a valid language-independent type name.
Parameter name: typeName The type name:"System.Configuration. ConfigurationManager" on the property:"BaseType" of type:"System.CodeDom.CodeTypeReference" is not a valid language-independent type name.
Parameter name: typeName



اما وقتی با وجود خطاها اجرا میگیرم برنامه کار میکنه فقط مشکل اینجاست که دیگه هر جا دیتا ست رو استفاده کردم هم این error رو میده

Error 172 'BreedModification.BusinessEntities.DataSet1.RoleD ataTable' is inaccessible due to its protection level

و وقتی جلو دیتاست نقطه میگذارم دیتا تیبل هام رو نشون نمیده خوب فکر کنم run time به این connection دسترسی داره اما اینجوری کد نویسی برام دشوار و به خاطر error ها پروژه درست biuld نمیشه باید چه کار کنم؟؟؟


در ضمن وقتیproperties table adapter ها رو نگاه میکنم این اطلاعات رو نمایش میده

connection = daamConnectionString (Web.config
Name = daamConnectionString (Web.config
Modifier = Internal
ConnectionString = Unable to find connection 'daamConnectionString' for object 'Web.config'. The connection string could not be found in application settings, or the data provider associated with the connection string could not be loaded

fakhravari
دوشنبه 04 مهر 1390, 11:23 صبح
اگه میشه پروژه رو بزارین شاید اساید بتونن جواب بدن.
احتمال زیاد با دیتابیس ارتباط برقرار نمیشه و اگر شده احتمال اینکاه فیلد ها رو دستکاری کرده باشین

m_u3fi
دوشنبه 04 مهر 1390, 11:38 صبح
وقتی برش میگردونم به حالت اول یعنی اینکه از Setting بخونه همه چی درست کار میکنه

در ضمن گفتم وقتی پروژه اجرا میشه کار میکنه در حالت Design درد سر درست میکنه


<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DataSet1" targetNamespace="http://tempuri.org/DataSet1.xsd" xmlns:mstns="http://tempuri.org/DataSet1.xsd" xmlns="http://tempuri.org/DataSet1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="1" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
<Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="daamConnectionString" IsAppSettingsProperty="true" Modifier="Assembly" Name="daamConnectionString (Web.config)" ParameterPrefix="@" PropertyReference="AppConfig.System.Configuration. ConfigurationManager.0.ConnectionStrings.daamConne ctionString.ConnectionString" Provider="System.Data.SqlClient" />
</Connections>
<Tables>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="AssociationTableAdapter" GeneratorDataComponentClassName="AssociationTableAdapter" Name="Association" UserDataComponentName="AssociationTableAdapter">
<MainSource>
<DbSource ConnectionRef="daamConnectionString (Web.config)" DbObjectName="daam.dbo.Association" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="GetData" UserSourceName="Fill">
<DeleteCommand>


این بخشی از کد که مورد نیاز چک بشه

متاسفانه پروژه خیلی بزرگه امکانش نیست بگذارمش

fakhravari
دوشنبه 04 مهر 1390, 12:04 عصر
من خودم از کلاس استفاده میکنم
2 تا کانکشن دارم یکی برای کلاس یکی برای جاهایی که نمی خوام از کلاس استفاده کنم
توی قسمت کد دیتاست
این کد برای ار تباط
<Connections>
<Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="DatabaseCenterConnectionString" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="DatabaseCenterConnectionString (Web.config)" ParameterPrefix="@" PropertyReference="AppConfig.System.Configuration.ConfigurationManage r.0.ConnectionStrings.DatabaseCenterConnectionStri ng.ConnectionString" Provider="System.Data.SqlClient" />
</Connections>
اینم کد هم برای ارتباط با جدول
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="TBLNewsTableAdapter" GeneratorDataComponentClassName="TBLNewsTableAdapter" Name="TBLNews" UserDataComponentName="TBLNewsTableAdapter">


<DbSource ConnectionRef="DatabaseCenterConnectionString (Web.config)" DbObjectName="DatabaseCenter.dbo.TBLNews" DbObjectType="Table" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="true" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">

توی برنامه
از ObjectDataSource

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
DeleteMethod="Delete" InsertMethod="Insert"
OldValuesParameterFormatString="original_{0}" SelectMethod="GetData"
TypeName="DataSet1TableAdapters.TBLNewsTableAdapter" UpdateMethod="Update">
<DeleteParameters>
<asp:Parameter Name="Original_NewsID" Type="Int32" />
</DeleteParameters>
<UpdateParameters>
<asp:Parameter Name="Title" Type="String" />
<asp:Parameter Name="Abstract" Type="String" />
<asp:Parameter Name="Contents" Type="String" />
<asp:Parameter Name="AddDate" Type="String" />
<asp:Parameter Name="img" Type="String" />
<asp:Parameter Name="Original_NewsID" Type="Int32" />
</UpdateParameters>
<InsertParameters>
<asp:Parameter Name="Title" Type="String" />
<asp:Parameter Name="Abstract" Type="String" />
<asp:Parameter Name="Contents" Type="String" />
<asp:Parameter Name="AddDate" Type="String" />
<asp:Parameter Name="img" Type="String" />
</InsertParameters>
</asp:ObjectDataSource>

fakhravari
دوشنبه 04 مهر 1390, 12:10 عصر
کد بلوک بزارین
Connections و TableAdapter و DbSource
تا یه مقایسه کنیم

m_u3fi
دوشنبه 04 مهر 1390, 13:51 عصر
من کد هاتون رو با مال خودم چک کردم تفاوتی ندارند پس چرا من مشکل دارم ؟!
اینم عکس خطاها

75793


75794

m_u3fi
دوشنبه 04 مهر 1390, 14:08 عصر
یه نکته رو متوجه شدم خواستم یه پروژه کوچیک درست کنم و بذارم تا شما اصلاحش کنید . وقتی به دیتا بیس خودم وصل میشدم همون خطاها رو داد . ولی وقتی توی پروژه دیتا بیس (.\SQLEXPRESS)اضافه کردم تا برای شما ارسال کنم دیدم که کلا خودش connection رو توی web.config تعریف کرد و نیازی به اصلاح من نبود . کد های شما رو هم که دیدم از .\SQLEXPRESS استفاده کردید . حالا من چطور به دیتا بیس خودم وصل بشم ؟؟؟؟

Connection string من اینه که به سرور data وصل میشه که دیتا بیس user روشه





<connectionStrings>

<add name="daamConnectionString" connectionString="Data Source=data;Initial Catalog=user;Integrated Security Info=True;User ID=sa;Password=sasa" providerName="System.Data.SqlClient"/>
</connectionStrings>

m_u3fi
دوشنبه 04 مهر 1390, 15:03 عصر
جناب فخر آوری از همراهیتون بسیار بسیار ممنون مشکل حل شد
همین که داشتم برای شما اون برنامه رو آماده میکردم متوجه مشکل شدم

یه Connection String با یه نام دیگه توی web .config بود و به احتمال زیاد اون باعث این خطا ها میشد چون حذفش کردم درست شد

باز هم تشکر فراوان موفق باشید

fakhravari
دوشنبه 04 مهر 1390, 15:12 عصر
connectionString="Data Source=data
data روی سیستم فکر نکنم باشه .
روی هاست که اینجوری ادرس دادی

http://barnamenevis.org/showthread.php?304895-%D9%85%D8%B4%DA%A9%D9%84-%D8%AF%D8%B1-%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%A8%D8%A7-%D8%A8%D8%A7%D9%86%DA%A9-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-%DA%A9%D8%AF-%D9%86%D9%88%DB%8C%D8%B3%DB%8C&highlight=User+Instance

fakhravari
دوشنبه 04 مهر 1390, 15:32 عصر
ببینید در کل ازتباط به این شکل
وقتی از دیتاست استفاده میکنی یه ادرس بانک باید داشته باشی که توی config مینویسه مثال
در دیتاست
<Connections>
<Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="String1" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="String1 (Web.config)" ParameterPrefix="@" PropertyReference="AppConfig.System.Configuration.ConfigurationManage r.0.ConnectionStrings.String1.ConnectionString" Provider="System.Data.SqlClient" />
</Connections>

وب کونفیگ
<connectionStrings>
<add name="String1" connectionString="Data Source=.\sqlexpress;Initial Catalog=Rahim;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
_________________________________________
به نظر میرسه کلا شما با ارتباط مشکل دارین
فایل دیتاست خالی
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="DataSet1" targetNamespace="http://tempuri.org/DataSet1.xsd" xmlns:mstns="http://tempuri.org/DataSet1.xsd" xmlns="http://tempuri.org/DataSet1.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop" attributeFormDefault="qualified" elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo source="urn:schemas-microsoft-com:xml-msdatasource">
<DataSource DefaultConnectionIndex="1" FunctionsComponentName="QueriesTableAdapter" Modifier="AutoLayout, AnsiClass, Class, Public" SchemaSerializationMode="IncludeSchema" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<Connections>
<Connection AppSettingsObjectName="Web.config" AppSettingsPropertyName="String1" ConnectionStringObject="" IsAppSettingsProperty="true" Modifier="Assembly" Name="String1 (Web.config)" ParameterPrefix="@" PropertyReference="AppConfig.System.Configuration.ConfigurationManage r.0.ConnectionStrings.String1.ConnectionString" Provider="System.Data.SqlClient" />
</Connections>
<Tables />
<Sources />
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DataSet1" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DataSet1" msprop:Generator_DataSetName="DataSet1">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
</xs:schema>

حالا یه دیتابیس بزار buld کن : مقایسه کن

fakhravari
دوشنبه 04 مهر 1390, 15:34 عصر
خواهش میکنم .