为了账号安全,请及时绑定邮箱和手机立即绑定

在 EF 中动态设置数据源

在 EF 中动态设置数据源

C#
哈士奇WWW 2021-11-14 14:48:58
我正在使用 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()}
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

我假设您可以向上下文的构造函数添加一个布尔参数:


public MyEntity(string connectionString, bool includePerson)

{

    _includePersion = includePerson;

}

现在上下文可以有一个属性Person,或者最好是复数形式People:


public IQueryable<Person> People

{

    get => _includePerson 

        ? Set<Person>()

        : (new[] { new Person() }).AsQueryable();

}

从技术上讲,您现在应该摆脱困境,因为没有 to/from 导航属性Person。但是,我担心这种构造可能会在下游产生比乍一看预期更多的后果。我会尽一切努力避免它。在Person没有它的情况下向数据库添加一个空表会好得多。这甚至可以由应用程序本身完成,前提是登录的数据库用户具有所需的 DDL 权限。


查看完整回答
反对 回复 2021-11-14
  • 1 回答
  • 0 关注
  • 130 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信