C# ASPNETBOILERPLATE.Net核心模板-现有数据库代码示例请求

C# ASPNETBOILERPLATE.Net核心模板-现有数据库代码示例请求,c#,entity-framework,.net-core,aspnetboilerplate,C#,Entity Framework,.net Core,Aspnetboilerplate,我们希望在我们的企业中实现ABP模板。我们现有的应用程序数据库不能与code first EF一起使用。企业将不允许使用代码优先的方法。所以我们需要使用db-first方法。 如果有人使用现有DB和SPs实施ABP。您可以分享一些代码片段,这些代码片段是您对启用db first use的模板所做的所有更改。 非常感谢所有回复 我想你不能先使用EF代码,因为你的公司不想丢失你当前的数据库、数据、SP等。这没关系 因此,我的建议是创建一个ABP应用程序,并以与当前关系模型(数据库)匹配的方式创建实体

我们希望在我们的企业中实现ABP模板。我们现有的应用程序数据库不能与code first EF一起使用。企业将不允许使用代码优先的方法。所以我们需要使用db-first方法。 如果有人使用现有DB和SPs实施ABP。您可以分享一些代码片段,这些代码片段是您对启用db first use的模板所做的所有更改。
非常感谢所有回复

我想你不能先使用EF代码,因为你的公司不想丢失你当前的数据库、数据、SP等。这没关系

因此,我的建议是创建一个ABP应用程序,并以与当前关系模型(数据库)匹配的方式创建实体。这是正确的,因为EF足够灵活,可以自定义生成的关系模型:

  • 表之间的关系
  • 表名和列名
  • 素数键类型
  • 外键
  • 等等
YourApp\u DbContext类中,您可以覆盖OnModelCreating并个性化生成的关系模型

一旦实体与关系模型匹配,就可以继续使用代码优先的方法

我认为使用数据库优先的方法是不正确的,ABP并不是为此而设计的。使用数据库优先的方法只是在最初生成实体(如果愿意,可以节省时间)

关于SPs,您可以在EF中调用SPs。您可以执行原始SQL查询,结果可以映射到实体或任何其他自定义类


我希望您觉得它有用。

您不能使用代码优先迁移,但仍然可以利用代码优先实体映射。对于现有数据库表,请使用反向工程工具创建数据库的代码优先模型

对于存储过程,可以使用Dapper(它与aspnetboilerplate集成)。另一方面,实体框架也支持存储过程。您必须创建自定义存储库>

这是一个正在执行的示例自定义命令。这样您就可以运行sp

  • 从任何模板创建.NET核心新项目

    dotnet新mvc-au None-f netcoreapp1.0

  • EF Core支持现有的DB(DB优先方法),详细说明如下。基本上,您将使用Scaffold DbContext命令生成所有模型类


  • 请注意,Scaffold DbContext尚不支持StoredProcess,它位于中。因此,您可能需要以不同的方式进行管理

    欢迎使用So!为了更好地理解你的问题,你能分享一些你的代码和你到目前为止所尝试的吗?到目前为止,我们刚刚使用EF-core-scaffold cmd从现有数据库创建了“POCO”类。我们已经将DBSet条目添加到DBContext中。我们没有做任何“新”的事情。我们希望从其他人那里获得示例代码,他们首先使用ABP模板设置了DB。我们也需要使用SPs,希望看到一些这样做的示例代码。你到底在坚持什么?有什么不好用的吗?谢谢你的回复!我很感激。企业是一个非常大的全球性组织。正如你所料,我们有职责分离政策。我们有数据架构师、DBA,还有我们的团队——应用程序开发人员。由于这种结构,我们不允许首先使用代码,因为这属于DA和DBA团队。作为应用程序团队,我们不允许创建任何类型的DB对象。我们只能向DA/DBA提出设计方案。我个人使用ABP模板已经将近一年了,现在我已经在一个独立的项目中使用了代码优先。我只是想先看看使用ABPDB的代码片段。谢谢回复!事实上,在我发布帖子后,我自己发现了微软文档。我一步一步地跟着它。但我在迁移过程中不断遇到另一个错误。我已经将其发布到支持团队的aspnetzero论坛。
    using (var uow = uowManager.Begin(TransactionScopeOption.Suppress))
    {
        using (var con = new SqlConnection(ConnectionString))
        {
            con.Open();
    
            using (var command = new SqlCommand("select * from ... ", con))
            {
                using (var reader = command.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        return reader.GetString(0);
                    }
                }
            }
        }
    
        uow2.Complete();
    }