LinqからSQLベースクラスのDiscriminator Valueバグ

Linq-to-Sql Designerでは、抽象基本クラスに対して「基本クラス識別子値」を定義しないと、「Xでルートされる継承階層はデフォルトを定義しません」と表示されます。実行時エラーが、私はそれを行う場合、 "抽象クラス 'クラス名'は、継承の弁別子キーを割り当てるべきではありません。エラー。何が問題なの?

EDITED:

自分でその理由と解決策を見つけました。私の質問には答えないでください。

たとえあなたのデータベースに、定義された継承コードと一致しない行がないことがわかっていても、Linq-to-SQLの "継承デフォルト"プロパティを設定する必要があります。しかし、抽象基本クラスを継承デフォルトとして使用することはできません。したがって、何もしない(コンストラクタなどで例外をスローする)ダミーの非抽象クラスを作成し、それを "継承デフォルト"として使用する必要があります。 「基本クラス識別値」は空のま​​まにします。

3
将来の参照のためにあなたの質問への回答としてあなたの編集を追加してみませんか?
追加された 著者 scottm,
@Denis、質問の一部を新しい回答として投稿編集し、それを受け入れます。
追加された 著者 Alex,
十分な担当者がいない。
追加された 著者 Denis,

1 答え

私は、デフォルトの識別子を0に設定して、ベースルックアップクラスを通常のクラスにし、デフォルトのクラスをルックアップテーブルに設定することで、私の仕事をしました。これは弁別器の使用を必要としない。私はサポートの理由からこの方法を好む。 2年後に誰かがダミーレコードを(故意にまたは偶然に)削除し、理由を調べるために永久に取るかもしれません。それは単にそれを単純に保ちますが、あなたはアーキテクチャにヒットします。しかし、すべてのORMの場合、常にそのような決定を下す必要があります。

私はあなたが答えがほしいと思わなかったことを知っていますが、私はこれをしました。これにより、彼らは情報に基づいた決定をすることができます。

0
追加された