2
私は多くのエンティティを持っています。そのうちの1つはOrderLine
エンティティは少数の関係を使用します。それはAccountTransaction
との関係です。コンテキストからAccountTransaction
クラスを取得すると、遅い負荷でOrderLine
レコードを取得できます。しかし、コンテキストからOrderLine
クラスを取得すると、AccountTransaction
ナビゲーションプロパティはnullです。 この問題を解決するにはどうすればよいですか?エンティティフレームワーク任意選択の1対1リレーションシップは機能しません
public partial class OrderLine : Base
{
[Key, ForeignKey("AccountTransaction")]
public int OrderLineId { get; set; }
public virtual AccountTransaction AccountTransaction { get; set; }
}
public class AccountTransaction
{
[Key]
public int TransactionId { get; set; }
[ForeignKey("OrderLine")]
public int? OrderLineId { get; set; }
public virtual OrderLine OrderLine { get; set; }
}
var orderLine = context.OrderLines.Find(167069);
var accTransaction = context.AccountTransactions.Find(38770);
//orderLine.AccountTransaction; //here account transaction is null
//accTransaction.OrderLine;//here orderLine is not null.
私は試しましたが、私はこの例外を発生させます。 AccountTransaction_OrderLine_Source :: Multiplicityは、 'AccountTransaction_OrderLine'という関係のRole 'AccountTransaction_OrderLine_Source'では無効です。依存ロールのプロパティはキープロパティではないため、依存ロールの多重度の上限は '*' – Yargicx
でなければなりません。この構造は通常の1:1パターンではなく1: '[Index(IsUnique = true)]'を 'AccountTransaction.OrderLineId'に追加して修正するか試してみてください。私は私の答えも編集します。 – CptRobby
私はほとんどの場合、1:1の関係は、両方のエンティティのキーを介して、追加のプロパティではなく、直接操作する必要があると確信しています。 OrderLineIdに[Key]属性を移動し、型をintに変更してください(この値はNULL値にできないため) – Miguel