私は Linq to Sql の初心者で、外部エンティティへのアクセスに関する問題に直面しています。関連する DB は次のとおりです。
Id、ProducerId の 2 つの列を持つテーブル MyClass
Id、Affix の 2 つの列を持つ Table Person
ここに私の部分クラスがあります:
public partial class MyClass
{
public string ProducerAffix
{
get { return Producer.Affix; }
}
}
また、ProducerId 外部キーに関連する Producer プロパティが生成される dbml デザイナー ファイル:
[global::System.Data.Linq.Mapping.AssociationAttribute(Name="Person_MyClass1", Storage="_Person1", ThisKey="ProducerId", OtherKey="Id", IsForeignKey=true)]
public Person Producer
{
get
{
return this._Person1.Entity;
}
set
{
Person previousValue = this._Person1.Entity;
if (((previousValue != value)
|| (this._Person1.HasLoadedOrAssignedValue == false)))
{
this.SendPropertyChanging();
if ((previousValue != null))
{
this._Person1.Entity = null;
previousValue.MyClass.Remove(this);
}
this._Person1.Entity = value;
if ((value != null))
{
value.MyClass.Add(this);
this.ProducerId = value.Id;
}
else
{
this.ProducerId = default(System.Guid);
}
this.SendPropertyChanged("Producer");
}
}
}
MyClass の Affix プロパティにアクセスすると、ObjectDisposedException がスローされます... プロパティにアクセスするときに Datacontext を開く必要がありますか?
私はこの記事を読みましたLINQ to SQL ObjectDisposedException on entity that never ask for but really would want to avoiding a ViewModel a... 他に解決策はありますか?
どうもありがとう !
編集
JATの回答に従って、DLOを使用しようとしましたが、外部の値を返す方法が本当にわかりません...このチュートリアルを見つけました( http://www.codeproject.com/Articles/37857/Optimizing-LINQ-Queries -using-DataLoadOptions )、クエリを作成する必要がありますか?
public string Affix
{
get
{
using (var db = new DBDataContext())
{
var dlo = new DataLoadOptions();
dlo.LoadWith<Person>(p => p.Affix);
db.LoadOptions = dlo;
...
return Producer.Affix;
}
}
}