首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET核库中的EF核

.NET核库中的EF核
EN

Stack Overflow用户
提问于 2019-06-27 21:18:51
回答 3查看 1.7K关注 0票数 4

其主要思想是将each包添加到.NET核心库项目中,然后在一组应用程序(例如,ASP.NET核心、Win服务、控制台应用程序)中使用该库,而无需在每个应用程序中配置EF。并且,如果可能的话,不要在每个包中添加EF包。我在想这是否可能。

我目前的问题是我不能根据我在库项目中的模型创建一个数据库。

看来我不能只选择Package控制台中的库项目并运行更新数据库。它希望我实现'IDesignTimeDbContextFactory‘。

我正在使用.NET Core2.1。如果我把它更新到最新版本会有帮助吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-29 21:29:44

简而言之,是的,你能做到。你可以跟随媒体故事"在单独项目中使用实体框架核心的.NET核心 - “。这个故事代表了一个示例应用程序的良好而详细的表示,该应用程序将.NET核心解决方案分为三个不同的项目:业务逻辑项目、数据访问层项目和web项目。

作者是罗德里戈·桑托斯,他是一个全栈开发人员和NET爱好者。像我过去那样,可以自由地跟踪他的工作。可能对你有帮助。

票数 1
EN

Stack Overflow用户

发布于 2019-06-28 16:32:33

正如错误中提到的,您需要实现IDesignTimeDbContextFactory,它是Microsoft.EntityFrameworkCore.Design包的一部分,所以继续在库中安装它。然后创建一个适当实现IDesignTimeDbContextFactory的类。

由于您创建了一个.NET核心库,将其设置为您的启动项目。

然后在Package控制台中,选择库作为默认项目并运行update-database

票数 2
EN

Stack Overflow用户

发布于 2019-06-29 01:25:13

是的,你能做到的。

确保安装了所有先决条件。

  1. 创建一个.NET核心控制台应用程序
  2. 为实体框架创建核心类库
  3. 从控制台应用程序引用类库
  4. 搭建数据库,转到Tools > Package控制台
  5. 从下拉列表中,将默认项目设置为类库,这样它就会在那里搭建支架。
  6. 在控制台(数据库第一方法)中运行此命令: Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models/EF -f
  7. 创建一个类以获取上下文
代码语言:javascript
复制
public class Context
    {
// See all queries generated by EF in debug window
        public static readonly LoggerFactory MyLoggerFactory
            = new LoggerFactory(new[] { new DebugLoggerProvider((s, level) => level >= LogLevel.Trace) });
        public static DF.Data.Models.EF.YourContext GetContext()
        {
            var optionsBuilder = new DbContextOptionsBuilder<DF.Data.Models.EF.YourContext>();
            optionsBuilder.UseSqlServer(
                "Your Connection String").UseLoggerFactory(MyLoggerFactory);
            return new DF.Data.Models.EF.YourContext(optionsBuilder.Options);
        }

        public partial class YourContext : DbContext
        {
            public YourContext(DbContextOptions optionsBuilderOptions) : base(optionsBuilderOptions)
            {
            }
        }
    }
  1. 如果愿意,创建一个存储查询的Repository类。

注意:当您再次搭建数据库时,请确保从下拉列表中选择类库项目作为默认项目。然后将另一个项目设置为启动项目。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56798579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档