ASPNETBOILERPLATE .Net Core 模板 - 现有数据库代码示例请求

ASPNETBOILERPLATE .Net Core template - Existing database code sample request

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

我猜您不能使用 EF Code-First,因为您的公司不想丢失您当前的数据库、数据、SP 等。没关系。

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

  • table
  • 之间的关系
  • table 和列名
  • 主键类型
  • 外键
  • 等等。

在您的 YourApp_DbContext class 中,您可以覆盖 OnModelCreating 并个性化生成的关系模型。

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

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

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

希望你觉得有用。

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

对于存储过程,您可以使用 Dapper(与 aspnetboilerplate 集成 click here). On the other hand entity framework also supports stored procedures. You have to create custom repository > click here for more info

这是一个正在执行的示例自定义命令。这样你就可以 运行 sp.. See here for more info

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();
}
  1. 从任何模板创建 .NET Core 新项目listed

    dotnet new mvc -au None -f netcoreapp1.0

  2. EF Core 支持现有的 DB(DB First approach),详细说明为 here 。基本上你将使用 Scaffold-DbContext 命令生成所有模型 类.

请注意 Scaffold-DbContext 尚不支持 StoredProcedures,它在 works 中。因此您可能需要以不同的方式进行管理