【问题标题】:Entity Framework 6.2 in Class Library doesn't work类库中的 Entity Framework 6.2 不起作用
【发布时间】:2018-08-14 17:47:00
【问题描述】:

我有以下问题:我试图将我的DbContext 类放入一个单独的类库中,但它不起作用。

我收到以下错误:

使用“2”参数调用“SetData”的异常:“在程序集'Microsoft.VisualStudio.ProjectSystem.VS.Implementation,版本中键入'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' =15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a' 未标记为可序列化。"
在 D:\Projekte\Seminar_Tool_Online\Seminar_Tool_Online\packages\EntityFramework.6.2.0\tools\EntityFramework.psm1:720 char:5
+ $domain.SetData('project', $project)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : 序列化异常

使用“2”参数调用“SetData”的异常:“在程序集'Microsoft.VisualStudio.ProjectSystem.VS.Implementation,版本中键入'Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject' =15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a' 未标记为可序列化。"
在 D:\Projekte\Seminar_Tool_Online\Seminar_Tool_Online\packages\EntityFramework.6.2.0\tools\EntityFramework.psm1:721 char:5
+ $domain.SetData('contextProject', $contextProject)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : 序列化异常

System.NullReferenceException:对象引用未设置为对象的实例。
在 System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetPropertyValue[T](项目项目,字符串 propertyName)
在 System.Data.Entity.Migrations.MigrationsDomainCommand.GetFacade(字符串配置类型名称,布尔值 useContextWorkingDirectory)
在 System.Data.Entity.Migrations.EnableMigrationsCommand.FindContextToEnable(String contextTypeName)
在 System.Data.Entity.Migrations.EnableMigrationsCommand.c__DisplayClass2.<.ctor>b__0()
在 System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(操作命令)
对象引用未设置为对象的实例。

我有一个名为“Seminar_Tool_Online”的 ASP.NET MVC 5 项目,这是我的启动项目。配置文件中包含 Entity Framework 所需的一切。

<configSections> 
    <section name="entityFramework" 
             type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
             requirePermission="false"/>
</configSections>
<connectionStrings>
    <add name="AccountConnection" 
         connectionString="Server=...; Database=...;User Id = ...; password=...; Integrated Security=False" 
         providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
        <providers>
            <provider invariantName="System.Data.SqlClient" 
                      type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
        </providers>
    </entityFramework>

我的类库被称为Seminar_Tool_Datenbank,具有以下DbContext 类:

    public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
            public ApplicationDbContext()
                : base("AccountConnection", throwIfV1Schema: false)
            {
            }

            public static ApplicationDbContext Create()
            {
                return new ApplicationDbContext();
            }

            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
            } 
    }

所以我在包管理器控制台中使用以下命令进行了尝试:

Enable-Migrations -EnableAutomaticMigrations -ProjectName Seminar_Tool_Datenbank -StartupProjectName Seminar_Tool_Online

我已经尝试过这里的解决方案:

没有什么对我有用,我仍然得到同样的错误。在这两个项目中,我都使用 EF 6.2 和 .Net 4.5.1

有人可以帮我吗?

更新

这可能是问题吗?

Make EF NuGet package / migrations and EF Tools work with new csproj format

【问题讨论】:

    标签: c# .net asp.net-mvc entity-framework dll


    【解决方案1】:

    我可以通过将 csproj 文件更改为 VS 2015 的旧标准来解决问题。

    【讨论】:

    • 你是怎么做到的?
    • @VinylWarmth 我使用 Visual Studio 2015 创建项目,之后我可以在 Visual Studio 2017 中使用它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2019-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    相关资源
    最近更新 更多