我有一个简洁的类型:
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 - 没有别的。
然后我有一个创建视图,它将测试列表枚举到一个下拉列表中,我看到正确的ID成功传递回控制器。
我的问题是,当我尝试通过以下方式将ViewModel映射到后端模型时:
prop.MyListID = model.MyListID;
然后我在prop中遇到MyList
null
时出现错误。
我确信我可以通过prop.MyList = db.TestList.find(model.MyListID);
进行修复,但这似乎浪费了数据库查询。
我可以从图表视图中看到外键是正确的并且MyListID被用作FK,但是,我只是无法弄清楚如何仅使用ID。
有人可以提供建议吗?
对这个问题的第一种类型错误的猜测 - 犯了一个愚蠢的错误。
答案 0 :(得分:1)
您创建了一对多关系(因为您使用virtual ICollection<TestList>
),现在EF创建新的一个表来映射此关系,并且您在MyList属性中获得了许多ID,您可以添加属性{{1 }到您的List属性,或使用Fluent Api映射它:
[ForeignKey("MyListID")]
然后您可以获取列表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
}
。
详细了解那里的一对多关系 - http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx