যখন এইডএমএক্স কোনও প্রকল্পে থাকে আপনি অন্য কোনও ক্ষেত্রে এটি ব্যবহার করছেন তখন আপনি এই ব্যতিক্রমটি পেতে পারেন।
কারণ Res://*/
একটি ইউরি যা বর্তমান সমাবেশে সংস্থানসমূহের দিকে ইঙ্গিত করে। যদি এডএম কোডটি ব্যবহার করছে এটি থেকে কোনও ভিন্ন সমাবেশে সংজ্ঞায়িত করা হয়, তবে: // * / কাজ করছে না কারণ উত্সটি খুঁজে পাওয়া যাচ্ছে না।
'*' নির্দিষ্ট করার পরিবর্তে, আপনাকে এর পরিবর্তে সমাবেশের পুরো নাম সরবরাহ করতে হবে (সর্বজনীন কী টোকেন সহ)। উদাহরণ:
res://YourDataAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=abcdefabcedf/YourEdmxFileName.csdl|res://...
সংযোগের স্ট্রিংগুলি তৈরি করার একটি ভাল উপায় হ'ল এন্টি কানেকশন স্ট্রিংবিল্ডার সহ:
public static string GetSqlCeConnectionString(string fileName)
{
var csBuilder = new EntityConnectionStringBuilder();
csBuilder.Provider = "System.Data.SqlServerCe.3.5";
csBuilder.ProviderConnectionString = string.Format("Data Source={0};", fileName);
csBuilder.Metadata = string.Format("res://{0}/YourEdmxFileName.csdl|res://{0}/YourEdmxFileName.ssdl|res://{0}/YourEdmxFileName.msl",
typeof(YourObjectContextType).Assembly.FullName);
return csBuilder.ToString();
}
public static string GetSqlConnectionString(string serverName, string databaseName)
{
SqlConnectionStringBuilder providerCs = new SqlConnectionStringBuilder();
providerCs.DataSource = serverName;
providerCs.InitialCatalog = databaseName;
providerCs.IntegratedSecurity = true;
var csBuilder = new EntityConnectionStringBuilder();
csBuilder.Provider = "System.Data.SqlClient";
csBuilder.ProviderConnectionString = providerCs.ToString();
csBuilder.Metadata = string.Format("res://{0}/YourEdmxFileName.csdl|res://{0}/YourEdmxFileName.ssdl|res://{0}/YourEdmxFileName.msl",
typeof(YourObjectContextType).Assembly.FullName);
return csBuilder.ToString();
}
যদি আপনি এখনও ব্যতিক্রমের মুখোমুখি হন তবে অ্যাসেম্বলিটি রিফ্লেক্টারে খুলুন এবং আপনার .csdl, .ssdl এবং .msl ফাইলগুলির জন্য ফাইলের নামগুলি পরীক্ষা করুন। মেটাডেটা মানতে নির্দিষ্ট হওয়াতে যখন সংস্থানগুলির আলাদা আলাদা নাম থাকে, তখন এটি কার্যকর হবে না।