SilverlightおよびRiaServicesに関連する基本的なチュートリアルを実行しましたが、現在、以前に使用したモデルに分岐しようとしています。
Riaサービスを使用したいSilverlightプロジェクトがあります。これまで見てきたRiaServicesのチュートリアルとは異なり、ドメインエンティティ(EFを使用して作成)を保持するビジネスオブジェクト(DLL)プロジェクトでリポジトリオブジェクトを使用するようにドメインサービスを使用したいと考えています。
これが私が使っているドメインサービスのスニペットの例です:
[EnableClientAccess()]
public class ContactService : DomainService
{
public List<Contact> ContactSearch(string lastName)
{
ContactRepository rep = new ContactRepository();
return rep.SearchByLastName(lastName);
}
}
ContactとContactRepositoryは私のBusinessObjectsプロジェクトにあります。ContactRepositoryは、EFに連絡先エンティティを照会します。
ビルドすると、次のエラーが発生します。
エンティティ'SilverlightCRM.BusinessObjects.Contact'にはキーが定義されていません。DomainService操作によって公開されるエンティティには、KeyAttributeでマークされたプロパティが少なくとも1つ必要です。
ここで説明するように、エンティティで生成されたコードを変更してContact.ContactID
プロパティを属性で装飾すると、ドメインサービスを含むプロジェクトのファイルで別のビルドエラーが発生します。System.ComponentModel.DataAnnotation.Key()
<projectname>.g.cs
名前空間のタイプ'データ'は名前空間'システム'に存在しません(アセンブリ参照がありませんか?)
ファイルはビルド時に自動生成されるため<projectname>.g.cs
、行をコメントアウトするだけでは機能せず、プロジェクト参照としてSystem.Dataがあります。
私はここで何が間違っているのですか?ソリューションの側面を整理するこのモデルを使用できると思いますが、Ria Servicesを使用する場合は、変更する必要がありますか?