ABP EF 执行存储 获得OutPut

本文介绍了一种使用C#实现的单号生成器,通过定义DocNoClass类和GetDocNoByDocTypes方法,结合SQL参数化查询,完美实现了根据单据类型获取对应单号的功能。

在网上查了大多数的资料代码都不全。今天实现了一下完美的实现;需要以下步骤

第一:

  public class DocNoClass : FullAuditedEntity<string>
    {
        public string sBillNo { get; set; }
    }

第二步:

   /// <summary>
        ///  根据单据类型获取对应的单号
        /// </summary>
        /// <param name="DocType">单据类型</param>
        /// <returns></returns>
        public string GetDocNoByDocTypes(string DocType)
        {
            SqlParameter[] param ={
                 new SqlParameter("@sBillType",SqlDbType.NChar,40),
                 new SqlParameter("@sBillNo",SqlDbType.NChar,40)};
            param[0].Value = DocType;
            param[1].Direction = ParameterDirection.Output;
            string DocNo = string.Empty;
            try
            {
                _sqlExecuter.SqlQuery<DocNoClass>("exec sp_bill_no @sBillType, @sBillNo out", param[0], param[1]);
                DocNo = (string)param[1].Value;
            }
            catch (Exception ex)
            {
               
                DocNo = "0";
            }
            return DocNo;
        }

完美的把单号获取出来了

<think>嗯,用户问的是关于.NET Core ABP EF的ConfigureConventions。首先,我需要确认这些关键词分别代表什么。ABP应该是ASP.NET Boilerplate或者ABP Framework,一个用于构建企业级应用的框架。EF是Entity Framework Core,.NET Core的ORM工具。ConfigureConventions可能指的是EF Core中的模型配置约定。 用户可能在使用ABP框架时,遇到了需要自定义EF Core模型配置的情况,比如设置表名、字段类型等。ABP框架通常封装了EF Core的配置,但高级用户可能需要更细粒度的控制。ConfigureConventions是EF Core中的一个方法,允许全局配置模型约定,比如所有decimal属性映射到数据库时的精度和小数位数。 接下来需要整理ABP中如何集成EF Core,并说明在哪里以及如何使用ConfigureConventions。可能需要提到在DbContext中重写ConfigureConventions方法,并举例说明常见的配置,比如字符串默认长度、精度设置,或者全局过滤器(软删除)。 还要考虑用户可能的实际应用场景,比如统一数据库字段规范,或者应用多租户的全局过滤。同时要注意ABP框架自身的一些约定是否与自定义配置冲突,需要指导用户正确合并两者。 需要检查是否有官方文档或社区最佳实践支持这些配置,确保提供的信息准确。如果用户不熟悉EF Core的模型约定,可能需要简要解释概念,再结合ABP的使用场景,说明为什么需要自定义ConfigureConventions。 最后,总结步骤:在ABP项目的DbContext中重写ConfigureConventions方法,使用提供的API进行全局配置,并给出示例代码,如设置所有decimal属性的精度,或者设置默认字符串长度。这样用户可以直接应用,解决他们的问题。</think>在 .NET Core 中使用 **ABP Framework**(ASP.NET Boilerplate)结合 **Entity Framework Core (EF Core)** 时,`ConfigureConventions` 是一个用于配置 EF Core 模型约定(Model Conventions)的关键方法。以下是对其作用和用法的详细介绍: --- ### **1. 什么是 EF Core 的 Conventions(约定)?** EF Core 在构建数据模型时,会基于一系列默认约定(如主键命名、表名映射等)自动推断数据库结构。例如: - 名为 `Id` 的属性会被自动设为主键。 - 实体类名默认映射为数据库表名(复数形式)。 - 字符串类型默认映射为 `nvarchar(max)`。 **`ConfigureConventions` 方法允许你全局修改这些默认约定**,而无需逐个实体或属性配置。 --- ### **2. ABP 中如何集成 ConfigureConventions?** 在 ABP 框架中,当你使用 EF Core 作为数据库提供程序时,通常需要创建一个继承自 `AbpDbContext<TDbContext>` 的自定义 `DbContext` 类。在此类中,可以重写 `ConfigureConventions` 方法来自定义全局约定。 ```csharp using Microsoft.EntityFrameworkCore; using Volo.Abp.EntityFrameworkCore; public class MyDbContext : AbpDbContext<MyDbContext> { // ... 其他配置(DbSet、ConfigureServices等) protected override void ConfigureConventions( ModelConfigurationBuilder configurationBuilder) { base.ConfigureConventions(configurationBuilder); // 在此处添加全局约定配置 configurationBuilder.Properties<string>() .HaveMaxLength(200); // 全局设置所有 string 属性的默认长度为 200 configurationBuilder.Properties<decimal>() .HavePrecision(18, 6); // 全局设置 decimal 类型精度为 18,6 } } ``` --- ### **3. 常见的 ConfigureConventions 配置场景** #### **a. 全局字段类型和长度** ```csharp // 所有 string 类型默认设置为 nvarchar(200) configurationBuilder.Properties<string>().HaveMaxLength(200); // 所有 decimal 类型设置精度为 18,6 configurationBuilder.Properties<decimal>().HavePrecision(18, 6); ``` #### **b. 自定义表/列命名约定** ```csharp // 全局设置表名为单数形式(默认是复数) configurationBuilder.Conventions.Add( new TableNameFromEntityTypeConvention(entityType => entityType.ClrType.Name) ); ``` #### **c. 全局过滤器(如软删除或多租户)** ```csharp // 自动为所有实体添加 IsDeleted 过滤条件 configurationBuilder.Conventions.Add( new AbpQueryFilterConvention<ISoftDelete>(e => e.IsDeleted == false) ); ``` #### **d. 自定义主键或索引约定** ```csharp // 所有名为 "Code" 的属性设置为唯一索引 configurationBuilder.Conventions.Add( new IndexConvention(property => property.Name == "Code", isUnique: true) ); ``` --- ### **4. ABP 特有的约定** ABP 框架已经内置了一些约定(如多租户、审计日志等),这些约定会与你的自定义配置协同工作。例如: - **多租户(Multi-Tenancy)**:自动为实现了 `IMultiTenant` 接口的实体添加 TenantId 过滤。 - **软删除(Soft Delete)**:自动过滤标记为 `IsDeleted = true` 的记录。 - **审计(Auditing)**:自动记录创建时间、修改时间等字段。 --- ### **5. 注意事项** - **优先级**:直接通过 `EntityTypeBuilder` 在 `OnModelCreating` 中的配置会覆盖 `ConfigureConventions` 的全局约定。 - **兼容性**:确保自定义约定与 ABP 内置约定兼容,避免冲突。 - **性能**:复杂的全局约定可能会影响 EF Core 模型构建性能,需谨慎设计。 --- 通过合理使用 `ConfigureConventions`,你可以在 ABP 项目中实现高度一致的数据库模型规范,减少重复配置代码。如果需要更细粒度的控制,可以结合 Fluent API(在 `OnModelCreating` 中)进行实体级配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值