wolf_majid
پنج شنبه 10 مهر 1393, 16:04 عصر
سلام دوستان
من موقعیکه فایل app.config را در DAL ایجاد میکنم متد زیر بهم خطا میده
/// <summary>
/// تنظیم کانکشن
/// </summary>
/// <param name="con"></param>
public static void SetSqlConnection(string con)
{
var settings = ConfigurationManager.ConnectionStrings["MYDBEntities"];
var fi = typeof(ConfigurationElement).GetField("_bReadOnly",
BindingFlags.Instance | BindingFlags.NonPublic);
if (fi != null) fi.SetValue(settings, false);
settings.ConnectionString = con;
}
دلیلش هم اینه که settings برابر با nullه .
فایل app.config :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="MYDBEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provide r connection string="data source=(LocalDB)\v11.0;attachdbfilename=E:\MehrCom panyPrject\MehrCompanyPrject\MYDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=En tityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
اما زمانیکه فایل app.config را به لایه UI میبرم , خطا در جای دیگه و بروش دیگه صادر میشه
خطا در زمان اجرا و به عنوام مثال هنگام فراخوانی متد زیر رخ میده :
/// <summary>
/// مشتریان را بر اساس اینکه مشتری ما هستند یا نه برمیگرداند
/// </summary>
/// <param name="entities"></param>
/// <param name="value"></param>
/// <param name="isReverse"></param>
/// <returns></returns>
public static IQueryable<PersonAndCompany> SelectFromIsourcustomer(/*MYDBEntities entities,*/ bool? value, bool isReverse = false)
{
var pc = new PersonAndCompany { IsOurCustomer = value };
var result = Select(/*entities,*/ FieldForSearch.IsOurCustomer, pc);
return !isReverse ? result : SelectAll(/*entities*/).Except(result);
}
متن خطا :
The specified LINQ expression contains references to queries that are associated with different contexts.
همونطور که می بینید پارامتر اول متد کامنت شده
اما اگر اون رو از کامنت در بیارم و توی لایه UI اون رو مقداردهی کنم با هیچ خطایی مواجه نمیشم و برنامه به خوبی کار میکنه
اما جداسازی لایه ها به خوبی صورت نمی پذیره
به نظرتون چکار کنم ؟
من موقعیکه فایل app.config را در DAL ایجاد میکنم متد زیر بهم خطا میده
/// <summary>
/// تنظیم کانکشن
/// </summary>
/// <param name="con"></param>
public static void SetSqlConnection(string con)
{
var settings = ConfigurationManager.ConnectionStrings["MYDBEntities"];
var fi = typeof(ConfigurationElement).GetField("_bReadOnly",
BindingFlags.Instance | BindingFlags.NonPublic);
if (fi != null) fi.SetValue(settings, false);
settings.ConnectionString = con;
}
دلیلش هم اینه که settings برابر با nullه .
فایل app.config :
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="MYDBEntities" connectionString="metadata=res://*/MyModel.csdl|res://*/MyModel.ssdl|res://*/MyModel.msl;provider=System.Data.SqlClient;provide r connection string="data source=(LocalDB)\v11.0;attachdbfilename=E:\MehrCom panyPrject\MehrCompanyPrject\MYDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=En tityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
</configuration>
اما زمانیکه فایل app.config را به لایه UI میبرم , خطا در جای دیگه و بروش دیگه صادر میشه
خطا در زمان اجرا و به عنوام مثال هنگام فراخوانی متد زیر رخ میده :
/// <summary>
/// مشتریان را بر اساس اینکه مشتری ما هستند یا نه برمیگرداند
/// </summary>
/// <param name="entities"></param>
/// <param name="value"></param>
/// <param name="isReverse"></param>
/// <returns></returns>
public static IQueryable<PersonAndCompany> SelectFromIsourcustomer(/*MYDBEntities entities,*/ bool? value, bool isReverse = false)
{
var pc = new PersonAndCompany { IsOurCustomer = value };
var result = Select(/*entities,*/ FieldForSearch.IsOurCustomer, pc);
return !isReverse ? result : SelectAll(/*entities*/).Except(result);
}
متن خطا :
The specified LINQ expression contains references to queries that are associated with different contexts.
همونطور که می بینید پارامتر اول متد کامنت شده
اما اگر اون رو از کامنت در بیارم و توی لایه UI اون رو مقداردهی کنم با هیچ خطایی مواجه نمیشم و برنامه به خوبی کار میکنه
اما جداسازی لایه ها به خوبی صورت نمی پذیره
به نظرتون چکار کنم ؟