Code First Entity Framework を使用していますが、機能のリストを 1 つのオブジェクトに追加する必要がある場所に行き詰まっています。
例 :
私は次の集計を持っています。
1) Plan.cs
2) 機能.cs
これで、Plan Agg を使用して計画を作成し、それらの機能を計画に割り当てることができます。
しかし、新しいプランを作成して同じ機能を割り当てると、最初のプランの機能が削除され、2 番目のプランに割り当てられます。
プラン=ベーシックパッケージ、プレミアムパッケージ
機能 = アップロード、削除、作成、更新。
ここで、すべての機能を基本パッケージに割り当てた場合、つまり、アップロード、削除、作成、および更新します。正常に動作しますが、削除と作成をプレミアム パッケージに割り当てると、プレミアム パッケージに割り当てられますが、削除と作成は基本パッケージから削除されます。
申し訳ありませんが、私の状況を正しく説明することができません。
どんな助けでも大歓迎です。
編集:更新されたコード:
集計 :
public class Plan:Entity
{
// other properties ...
public virtual List<Features> PlanFeatures {get;set;}
// other properties go here...
}
..計画への機能の割り当てを実行する関数。
// ids of features to be assigned
// var FeatureIds = List<int>{1,2,3};
// Get the Plan with the Plan Id.
var plan = _planRepository.Get(planId);
// Get the Service with Service Id.
Service service = _serviceRepository.Get(serviceId);
// Get the Features for the passed FeatureIds.
var features = service.Features.FindAll(x => FeatureIds.Contains(x.FeatureId));
//We will begin a transaction for the subscription process
using (var transactionScope = new TransactionScope())
{
// Add the List<Feature> to Plan.
Plan.Features.AddRange(features);
//Save changes
_planRepository.UnitOfWork.Commit();
transactionScope.Complete();
}
編集2:
"Features" のデータベース テーブルに、ForeignKey "Plan_PlanId" があることに気付きました
機能を基本パッケージに割り当てると、機能テーブルが次のように更新されます。
FeatureId FeatureName Plan_PlanId
1 -------- 作成 -------- 1
2 -------- 削除 -------- 1
3 -------- 更新 -------- 1
次に、これらの機能をプレミアム パッケージに割り当てると、プレミアム パッケージに 2 つの機能のみを割り当てます。
FeatureId FeatureName Plan_PlanId
1 -------- 作成 -------- 1
2 -------- 削除 -------- 2
3 -------- 更新 -------- 2
しかし、これらの機能を両方のプランで利用できるようにしたいと考えています。
みんなを助けてください。