【问题标题】:breeze - help starting out微风 - 帮助开始
【发布时间】:2016-01-22 18:32:49
【问题描述】:

我正在 Visual Studio 中开发一个 c#/mvc/breeze/angular 项目,我被要求构建全新的功能。目前,我们设置了一个存储过程,它被用于一个完全不同的地方来提取数据,现在我们正在将这个使用这个存储过程的“工作表”迁移到这个 c#/mvc/breeze/angular 项目。存储过程返回一个常规的记录集 - select * from mytable...它会做一些复杂的事情(不仅仅是基本查询)来返回记录...

到目前为止,我在 c#/mvc/breeze/angular 项目中看到,它们只使用存储过程两种方式:一种方式是存储过程返回单个值,另一种方式是返回多个像这样选择: select * from table1 从表 2 中选择 * 从表 3 中选择 *。

我的问题是:我应该如何开始我的项目(将其添加到这个项目中......) - 我可以使用现有的存储过程还是有一些方法可以将它与微风集成以消除对存储的需求程序...

我看到他们在这个 c#/mvc/breeze/angular 项目上设置了一个表格样式的工作表(带有过滤器),我不能完全遵循它,但它似乎没有命中存储过程。我不熟悉微风角度的东西。

【问题讨论】:

    标签: angularjs breeze


    【解决方案1】:

    如果我理解正确,您希望轻而易举地检索存储过程产生的数据。 this answer 有帮助吗?

    简而言之,您可以定义要从存储过程中提取的对象的类:

    internal class RvRDetail
    {
        public string DistrictName { get; set; }
        public string EmployeeName { get; set; }
        public string SiteName { get; set; }
        public System.DateTime CalendarDate { get; set; }
        public string RevenueCategoryName { get; set; }
        public decimal TotalRepayment { get; set; }
        public decimal TotalRevenue { get; set; }
    }
    

    然后在控制器中,像没有微风一样运行您的存储过程:

    [BreezeController]
    public class SeasonlessRvRController : BreezeAbstractApiController
    {
    
        // GET: breeze/SeasonlessRvR/RvRData
        [HttpGet]
        public object RvRData(string districtList="", string showAllPeriods="0")
        {
            var returnData = _dbContextProvider.Context.Database
                .SqlQuery<RvRDetail>("SELECT * from dbo.udf_SeasonlessRvR(@DistrictList, @ShowAllPeriods)",
                                new SqlParameter("@DistrictList", districtList),
                                new SqlParameter("@ShowAllPeriods", showAllPeriods))
                .ToList();
            return returnData;
        }
    }
    

    当您查询端点时,Breeze 会通过实体管理器返回

    由于breeze 只会返回普通的Javascript 对象,您也可以使用$http 使用非breeze api 端点来执行此操作。

    如果您想要所有的花里胡哨(缓存、自动连接到其他实体),您将必须创建一个视图并将其像表格一样包含在您的模型中,并定义适当的外键和导航属性。

    希望这会有所帮助。

    【讨论】:

    • 是的,但我该怎么做呢?我看不到直接使用存储过程的轻而易举 - 只有代表表的类/模型和代表关系的映射/类。我还看到 1 个其他帮助类,它直接在代码中使用一些非常简单的选择语句。如果我在 C# 中编写代码以使用我的存储过程,那么轻而易举呢? @beartrums
    • @LisaSolomon,将其设置为链接帖子中的示例。在该示例中,该类被定义为一个内部类,并且该操作在一个微风 api 控制器中定义。然后我可以对它们使用标准的微风查询技术,并通过 entityManager 访问它们,只需点击端点.from('RvRData'),返回我的 RvRDetail 对象数组。如果您需要导航属性并进一步集成到模型中而不仅仅是数据,那么您可能需要尝试将其定义为视图,您可以将其视为模型中的表。
    • 感谢@MayankPatel,我通常尽量不重复解决方案,但原来的帖子可能会消失是有道理的。
    • @Beartums:如果另一个问题的解决方案也适用于此处,请考虑将问题标记为重复,而不是复制。
    猜你喜欢
    • 2010-10-07
    • 1970-01-01
    • 2023-03-02
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 2014-08-27
    • 2011-07-23
    • 1970-01-01
    相关资源
    最近更新 更多