Item
というドメインとCategory
というドメインがあります。私はCategoryId
と呼ばれる別のプロパティを追加しました私はItem
にカテゴリのPKを追加したいが、私はEFで6Entity Frameworkドメイン間の参照を作成する
public class Item
{
[Key]
public Guid Id { get; set; } = GuidCombGenerator.GenerateComb();
public string Name { get; set; }
public Category Category { get; set; }
}
public class Category
{
[Key]
public Guid Id { get; set; } = GuidCombGenerator.GenerateComb();
public string Name { get; set; }
public virtual ICollection<Item> Items { get; set; } = new List<Item>();
}
これを行う方法がわからないです私はこの
var item = new Item
{
CategoryId = dto.CategoryId ,
Name = dto.Name.Trim(),
};
dbContext.StorageItems.Add(item);
dbContext.SaveChanges();
を行うことができると思いましたこれを正しいId
と入力してください。しかし、これは行くだけでなく、新しいCategory
エントリを2つをリンクするのではなく。
私はこれを行うことができると思ったが、おそらく私はそれをNHibernateと混ぜている。それがすべてで、これを好きではない
var item = new item
{
Category = new Category { Id = dto.CategoryId, },
Name = dto.Name.Trim(),
};
dbContext.StorageItems.Add(item);
dbContext.SaveChanges();
:
私は、これは(これは働くだろうとは思いませんでした)みました。
私が考えることのできる唯一の選択肢は、dbに行き、Category
オブジェクトを戻してItemに追加することですが、私はすでに知っているIDを取得するためにdbへの移動を防ぎたいと思います。
があなたをしたん'Category'プロパティを' virtual'にしてみてください。また、カスタムguid IDジェネレータ関数を使用していますか?それはまったく正しいとは思われません...独自のIDを作成する場合は、属性[DatabaseGenerated(DatabaseGeneratedOption.None)]を主キーに追加する必要があります。私はあなたの主キーの自動設定プロパティを使用して問題を引き起こしていると思います。 –