0

WCF DataServiceEntity Framework 4.1 (code-first)について質問があります。だから私はWebサーバーにDataServiceを持っています:

 [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    public class CrmDataService : DataService<CrmDataContext>
    {
        private static CrmDataContext _mdc;
        public static void InitializeService(DataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("*", EntitySetRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
            config.UseVerboseErrors = true;
        }

        protected override CrmDataContext CreateDataSource()
        {
            _mdc = new CrmDataContext(@"Data Source=localhost;Database=MyDb;User Id=sqluser;Password=111111;") { TablePrefix = "crm_" };
            _mdc.Configuration.ProxyCreationEnabled = false;
            return _mdc;
        }

CrmDataContext で使用されるエンティティ オブジェクト (Company、Address、Person など) のリストもあります。このサービスをクライアント アプリケーション (サービス名前空間など) に追加した後、同じエンティティ オブジェクトを Services 名前空間に取得しまし。そしてもちろん、Data Service を介して Company オブジェクト (たとえば) を取得すると、名前空間Servicesから一連のエンティティ オブジェクトが返されます。

私の質問は、データ サービスに実際のエンティティ オブジェクトを使用し、プロジェクトでこれらの他のプロキシ オブジェクトを作成しないように指示するにはどうすればよいかということです。それができない場合、データ サービスから取得したオブジェクトを実際のエンティティにコピーするにはどうすればよいですか?

私の目標は、データ コンテキストを使用してデータ サービスを介してサーバーからいくつかのエンティティ オブジェクトを取得し、それらをクライアント側で同じにすることです。ローカル側とサーバー側の両方で、すべてのエンティティ オブジェクトに対して 1 つのアセンブリを使用したいと考えています。

4

1 に答える 1

3

同じオブジェクトを使用する場合は、サービスをクライアント アプリケーションに追加する必要はありません。型を含むアセンブリを参照アセンブリに追加するだけで、クライアント アプリで、サービス uri を使用して DataServiceContext を作成します。

次のようにする必要があります。

context.CreateQuery(エンティティセット名)。

T は、サービスとクライアントで使用する一般的な型です。

覚えておくべきことの 1 つは、エンティティのキ​​ーが規則に従っていない場合、型に DataServiceKeyAttribute または DataServiceEntityAttribute を追加する必要がある場合があることです。

お役に立てれば。

ありがとうプラティック

于 2011-06-07T16:21:54.223 に答える