在 EF 中动态设置数据源

我正在使用 EF6,并且有 2 个不同版本的数据库 (MsSQL)。1 个版本有一个表 Person 而另一个没有。我正在覆盖OnModelCreating并且我使用modelBuilder.Ignore<Person>(); This 来调用其他表的数据库。我想要完成的是,当我通过 EF 调用实体时,它返回类 Person 的新实例,而不是尝试连接到数据库并获取其数据。


例如:


using(MyEntity ent = new MyEntity("connectionString")

{

  var myPerson = ent.Person.FirstOrDefault(); ==> Depending on version, return the DBData or new Person()

}


哈士奇WWW
浏览 132回答 1
1回答

繁星点点滴滴

我假设您可以向上下文的构造函数添加一个布尔参数:public MyEntity(string connectionString, bool includePerson){&nbsp; &nbsp; _includePersion = includePerson;}现在上下文可以有一个属性Person,或者最好是复数形式People:public IQueryable<Person> People{&nbsp; &nbsp; get => _includePerson&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; ? Set<Person>()&nbsp; &nbsp; &nbsp; &nbsp; : (new[] { new Person() }).AsQueryable();}从技术上讲,您现在应该摆脱困境,因为没有 to/from 导航属性Person。但是,我担心这种构造可能会在下游产生比乍一看预期更多的后果。我会尽一切努力避免它。在Person没有它的情况下向数据库添加一个空表会好得多。这甚至可以由应用程序本身完成,前提是登录的数据库用户具有所需的 DDL 权限。
打开App,查看更多内容
随时随地看视频慕课网APP