如何仅根据外键的ID保存外键
本文关键字:ID 保存 何仅根 | 更新日期: 2023-09-27 18:06:33
我有一个简单的类型:
public int ID { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public virtual TestList MyList { get; set; }
public int MyListID { get; set; }
TestList只有ID和Name,没有其他。
然后,我有一个创建视图,它将testlist枚举到下拉列表中,我看到正确的ID成功地传递回控制器。
我的问题是,当我试图将ViewModel映射到后端模型时:
prop.MyListID = model.MyListID;
然后我得到一个错误与外键作为MyList
在prop是null
。
我确信我可以通过做prop.MyList = db.TestList.find(model.MyListID);
来修复,但是,这似乎是浪费数据库查询。
我可以从图表视图中看到外键是正确的,MyListID被用作FK,但是,我只是不知道如何只使用ID。
谁能给点建议?
为这个问题的第一个类型中的错误道歉-犯了一个愚蠢的错误。
您创建了一对多关系(因为您使用virtual ICollection<TestList>
),现在EF创建新的一个表来映射此关系,并且您还可以在MyList属性中获得许多id,您可以将属性[ForeignKey("MyListID")]
添加到您的List属性,或使用Fluent Api映射它:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//one-to-many
modelBuilder.Entity<Entity>()
.HasRequired<TestList>(s => s.TestList) // This is navigational property (virtual)
.WithMany(s => s.MyList); //this is your list
}
那么你可以得到列表entity.MyList
。
阅读更多关于一对多的关系那里- http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx