0

数え切れないほどの時間の後、私はようやく流暢なAPI設定を取得して、複雑な既存のSQLDBをPOCOクラスにマップすることができました。うまくいかないことが1つあり、サポートされていないのではないかと思います。

クラスパワーには次のものがあります。

List<Transaction> PowerTransactions;
Transaction LastPowerTransaction;
int PowerTransactionId;

トランザクションは1対多であり、トランザクションテーブルにはPower.PowerIDを指すFKがあり、正常に機能します。

Powerには、トランザクションテーブルのTransactionIdを指す列PowerTransactionIdとFKがあります。

流暢なAPIを設定しました:

パワーには、必要なパワーを備えたオプションの最後のトランザクションがあります

HasOptional(x => x.LastPowerTransaction).WithRequired(x => x.PowerLastPowerTransaction).Map(x =>     x.MapKey("PowerTransactionId"));

Powers TransactionIdは123、PowerIDは1です。Power.LastPowertransactionを選択すると、123ではなくID1のトランザクションが取得されます。

多対多は、PowerID =1のPowerTransactionから..を選択するので、PowerID=123のPowerTransactionから..を選択する代わりに1対1が同じことを行います。

ここで何が欠けていますか?

4

1 に答える 1

0

ミステリーマンのコメントは本当の答えではありませんでしたが、言及されたツールを使用することは正しい答えにつながりました。EF4コードは、最初に共有主キーとの1対1の関係のみを実行します。reveresエンジニアリングは、1対1が作成されなかったため、これを明らかにしました。したがって、私の流暢なマッピングは間違っていました。これは最初のEF4コードの制限であり、既存のデータベースが共有主キーを使用しない場合、1対1を「偽の」1対多として使用することを回避する必要があります。

于 2012-11-09T20:36:53.983 に答える