繁体   English   中英

如何在Entity Framework中将集合与另一个上下文中的实体映射?

[英]How to map collection with entity from another context in Entity Framework?

我有这个EF实体

    public class Show
    {
        private ICollection<Country> _allowedCountries;

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

        }

}

其中Country是来自另一个上下文的实体。

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

表'db1.countries'不存在

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引起的

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

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

通常,您应该从需要的那一刻起打开一个上下文,并在完成时关闭它。 两者之间的所有工作都是在一个工作单元中完成的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM