如何仅根据外键的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。

谁能给点建议?

为这个问题的第一个类型中的错误道歉-犯了一个愚蠢的错误。

如何仅根据外键的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