EntityFramework4.1を使用しています。既存のデータベースからのフェッチが必要なWCFサービスを作成する必要があります。wsHttpバインディングを使用しています。WCFをサポートするDbContextジェネレーターを使用しました。生成されたクラスの2つは次のとおりです。
[DataContract(IsReference = true)]
[KnownType(typeof(TestSummary))]
public partial class Test
{
[DataMember]
public int Id { get; private set; }
[DataMember]
public virtual TestSummary TestSummary { get; set; }
}
と、
[DataContract(IsReference = true)]
[KnownType(typeof(Test))]
public partial class TestSummary
{
[DataMember]
public int Id { get; private set; }
[DataMember]
public string Summary { get; set; }
[DataMember]
public virtual Test Test { get; set; }
}
すべてのテストオブジェクトをフェッチすると、それに関連するTestSummaryが取得されません。他のすべてのエンティティでも同じことが起こります。テストエンティティをフェッチするためのコードの使用:
List<Test> tests = new List<Test>();
using (TestModelContainer context = new TestModelContainer())
{
var query = (from t in context.Tests select t);
foreach (var t in query)
{
Test test = (Test)t;
tests.Add(test);
}
}
ただし、WCFをサポートせずにDbContextジェネレーターを使用してクラスを生成すると、関連するすべてのエンティティも読み込まれます(コンソールアプリケーションでテストしました)。