我有一个使用EntityFramework 6.0的dotNet 4.6.2应用程序,我刚刚添加了一个针对4.6.2的dotNet Core控制台应用程序,如下所示:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net462</TargetFramework>
</PropertyGroup>
我需要访问我们现有的业务层(和entityFramework层),它需要配置文件中的connectString。我无法获取现有代码来读取控制台应用程序的appsetting.json(无需修改),因此我添加了一个app.config并粘贴在现有web.config中的connectStrings中。
当我访问数据库时,出现以下错误:
实体类型'APOrganization'和'Organization'不能 共享表'组织',因为它们不是同一类型 层次结构或没有有效的一对一外键关系 在它们之间匹配主键。
这是我的app.settings:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="MyApp" connectionString="Server=(localdb)\msSqlLocalDB; Integrated Security=True; Database=MyDatabase; MultipleActiveResultSets=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
我以后无法更改业务和现有的实体框架代码。
以下是更多信息: APOrganization实体绑定到AP模式中的表。该类具有此数据注释:
<Schema.Table("AP.Organization")>
组织实体绑定到默认(dbo)架构中的Organization表。
出于某种原因,EF 认为它在从Core应用程序启动时共享同一个表,但是在4.6.2应用程序启动时则没有。
答案 0 :(得分:1)
这是EF 6.0中的已知问题。它由6.1.3修正。 https://entityframework.codeplex.com/workitem/1641
我的dotNet核心应用程序安装了6.0,但原始应用程序安装了6.1.3。有趣的是,调用应用程序版本专用于它,而不是它所在的模块。
我升级了它的工作。