2011-12-20 9 views
0

データベースに2つの新しいテーブル、EmailCampaignとEmailTemplateを追加しました。 データベースからモデルを更新してEDMXを更新しました。 EDMXはRIA Servicesクラスライブラリにあります。efデータベースからモデルを更新するとき、新しいDomainServiceファイルを再作成せずにDomainServiceを更新する方法は?

クライアントサイド(Silverlightライブラリ)から、新しく作成されたエンティティは古いものだけが表示されます。 EF Designer.csで生成されたコードをチェックしましたが、新しいエンティティはそこにあります。クライアントからはアクセスできません。

私はEDMXの削除と読み取りを試みましたが、うまくいかなかった。

UPDATE エンティティがドメインサービスを通じて公開されていることがわかりました。私はドメインサービスを再作成し、すべてが機能しました。しかし、データベースに新しいテーブルが作成されるたびに問題が発生します。新しいドメインサービス.csファイルを生成せずに、古いコードを新しく生成してコピーすることなくドメインサービスを再生成する方法と、同じ)。だから、それは負担です。そこにいくつかのツールやいくつかのフレームワークがありますか?

答えて

0

部分クラスはあなたの友人です!ドメインサービスクラスを小さなものに分割し、頻繁に一緒に使うエンティティをグループ化しました。これは、クライアントサイドのモデルクラスと並行しています。だから、私のメインのドメインサービスクラスは次のようになります...

[EnableClientAccess()] 
    public partial class xxx_DomainService : LinqToEntitiesDomainService<xxxEntities> 
    { 
    } 

、各ファイルには、これを含んでいます

 public partial class xxx_DomainService : LinqToEntitiesDomainService<xxxEntities> 
     { 
     public IQueryAble<Address> GetAddresses() 
     { 
      return this.ObjectContext.Addressess; 
     } 
     ....more code 

     } 

そのように私はテーブルを変更した場合、私は再作成するドメインに持っています選択されたテーブルのサービス。

これは、「新しい」テーブルを作成するときに、偽の名前を使用してファイルを作成し、続いて「パブリック部分クラス」行を置き換えることを意味します。バディファイルには何も変更する必要はありません。あなたの名前空間に注意してください!

HTH、 リチャード

関連する問題