如何将集合与实体框架中另一个上下文中的实体进行映射
本文关键字:实体 上下文 映射 另一个 框架 集合 | 更新日期: 2023-09-27 17:57:02
我有这个EF实体
public class Show
{
private ICollection<Country> _allowedCountries;
public virtual ICollection<Country> AllowedCountries
{
get { return _allowedCountries ?? (_allowedCountries = new List<Country>()); }
set { _allowedCountries = value; }
}
}
其中国家/地区是来自另一个上下文的实体。
当我尝试读取属性允许的国家/地区时,我收到有关没有现有表的错误。
表 'db1.countries' 不存在
显示映射到 db1.show 表,国家/地区映射到 db2.国家/地区
我的地图国家/地区和显示表
public class CountryMap : EntityTypeConfiguration<Country>
{
public CountryMap()
{
ToTable("countries", "db2");
//other non useful information
}
}
public ShowMap()
{
ToTable("shows", "db1");
HasMany(x => x.AllowedCountries) //I think problem here
.WithMany()
.Map(m =>
{
m.ToTable("allowed_countries");
m.MapLeftKey("ShowID");
m.MapRightKey("CountryID");
});
}
我认为该问题是由不正确的映射引起的 允许的国家
我认为你不能拥有来自不同上下文的相关实体。您可以考虑使用链接服务器(MS SQL 功能)使两个表对一个连接可见。
老实说,我认为你应该避免这种混乱。也许你应该问问自己,为什么你有两个背景。
一般来说,你应该从需要的那一刻起就打开一个上下文,并在完成后关闭它;中间的一切都在一个工作单元中完成。