如何使用实体框架中的另一个上下文将集合映射到实体?

时间:2014-04-07 11:55:32

标签: c# entity-framework entity-framework-6

我是这个EF实体

    public class Show
    {
        private ICollection<Country> _allowedCountries;

        public virtual ICollection<Country> AllowedCountries
        {
            get { return _allowedCountries ?? (_allowedCountries = new List<Country>()); }
            set { _allowedCountries = value; }

        }

}

其中Country是来自另一个Context的实体。

当我尝试读取属性AllowedCountries时,我收到有关没有现有表的错误。

表&#39; db1.countries&#39;不存在

Show映射到db1.show表,Country映射到db2.countries

我的映射国家/地区和显示表

    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");
                });
}

我认为该问题是由不正确的映射AllowedCountries

引起的

2 个答案:

答案 0 :(得分:0)

我认为您不能拥有来自不同环境的相关实体。您可以考虑使用链接服务器(MS SQL功能)使两个表对一个连接可见。

答案 1 :(得分:0)

老实说,我认为你应该避免这种混乱。也许你应该问问自己为什么你有两个背景。

一般来说,你应该从你需要的那一刻起打开一个上下文,并在你完成时关闭它;中间的一切都是在一个单位的工作中完成的。