2011-07-13 7 views
0

私はこのコードと次EFモデルがあります:モジュールやパッケージbeteen Mの関係:モデルの作成時にFKを割り当てると、「ReferentialConstraintの従属プロパティがストア生成の列にマップされます」。

enter image description here

var modelToAdd = new Package 
       { 
        PackageID = model.LearningPackageID, // not auto-generated PK! 
        Name = model.Name, 
        Description = model.Description, 
        DateCreated = DateTime.Now, 
        ModuleID = model.ModuleID 
       }; 
       activityRepo.AddPackage(modelToAdd); 

これはあまりにも

var modelToAdd = new Pacakge 
      { 
       PackageID = model.LearningPackageID, // not auto-generated PK! 
       Name = model.Name, 
       Description = model.Description, 
       DateCreated = DateTime.Now 


      }; 
// assume moduleID is defined to a valid module ID (yes, tested) 
var module = entities.Modules.Where(x => x.ID == moduleID); 
module.Pacakges.Add(modelToAdd); 
entities.SaveChanges(); 

動作しません基本的には、1があります。しかし、ときに私は私が買ってあげる両方のケースのために、(ドロップダウンから得ている)ModuleIDはを設定しよう:

A dependent property in a ReferentialConstraint is mapped to a store-generated column. 

のPackageIDが英数字で、自動生成されないが、どちらかModuleIDはある、とそれはFKです

どうすればよいですか?

+0

したがって、 'Package'のあなたのPKとFKはすべて' StoreGeneratedPattern'を 'None'に設定していますか? –

答えて

2

StoreGeneratedPatternがNoneに設定されている場合は、Package.ModuleIDの概念プロパティとストア列(Devart Entityモデルを使用しているため、モデルエクスプローラでModel.Storeでチェックできます)を確認してください。 Entity Key以外の参照制約プロパティは、IdentityでもComputedでもありません。

+0

しかし、Module.ModuleIDはプライマリキーであり、Idenityのストア生成パターンを使用しています。私がnoneに設定した場合、自動インクリメント番号を生成するシーケンスはまだ機能しますか? – Extrakun

+0

@Extrakun、私はパッケージテーブルのModuleID列について話していました。モジュール表のID ID列に問題はないはずです。 – Devart

関連する問題