0
我有两个实体框架代码优先POCO。我可以很容易地将新的网站和技术项目插入到数据库中,但我似乎无法将站点与技术关联。当我这样做...EF代码优先:连接表为空
if(!site.Technologies.Any(o => (o.Name == technology.Name && technology.Source == source)))
{
site.Technologies.Add(technology);
technology.Sites.Add(site);
}
我得到一个重复键错误。如果我从条件中删除第二行,则连接表TechnologiesSites不会获得任何记录!如何在EF Code First中插入?
public class Site
{
public Site()
{
Technologies = new HashSet<Technology>();
}
[Key]
public string Hostname { get; set; }
public virtual ICollection<Technology> Technologies { get; set; }
}
和
public class Technology
{
[Key, Column(Order = 0)]
public string Name { get; set; }
[Key, Column(Order = 1)]
public string Source { get; set; }
public virtual ICollection<Site> Sites { get; set; }
public Technology()
{
Sites = new HashSet<Site>();
}
}
你能告诉我们你的病情生成的查询? (提示,将条件存储在一个变量中,并让Visual Studio调试帮助您:var query = site.Technologies.Where(.......)) – Polity
显示或描述您是如何获取网站和技术的。它们是否从相同的上下文实例加载? –