我正在使用 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 权限。
- 1 回答
- 0 关注
- 130 浏览
添加回答
举报
0/150
提交
取消