我目前使用实体框架(EF)的数据库优先方法。我正在研究使用EF调用存储过程(不与实体绑定的存储过程)的不同方法。目前,我使用方法found here使用设计器(在这种方法中,我导入存储过程,创建函数导入并使用复杂类型作为我的映射对象)。我不喜欢这样,因为它依赖于膨胀的EDMX文件,当两个或更多人执行此过程并检入其代码时,它会在源代码管理中导致合并冲突。
我发现this post声称我可以调用存储过程并映射到普通的旧C#对象(POCO)。
我的问题是,如果我想在不使用设计器方法的情况下将映射到POCO到EF中的存储过程,我如何获得列名称的别名?例如,让我们说我调用一个存储过程并获得一个名为" CustomerID"我希望映射到它的属性命名为" Id"而不是" CustomerID"。如果不使用设计师方法,我该怎么做?
答案 0 :(得分:2)
以下内容应该有效:
[your db context].Database.SqlQuery<[your POCO class]>("[name of stored proc] [comma separated parameters]", parameter1, parameter2, .....)
以下来自我的某个应用程序的示例:
_context.Database.SqlQuery<Library>("usp_paged_select_libraries @userId, @offset, @fetch", userIdParameter, offsetParameter, fetchParameter);
在您的POCO中,您可以使用以下标记来标记您的属性:
[Column("[your alias here]")]