实体框架 - 在没有映射的情况下调用存储过程

时间:2014-11-19 16:42:32

标签: c# sql-server entity-framework stored-procedures entity-framework-5

我目前使用实体框架(EF)的数据库优先方法。我正在研究使用EF调用存储过程(不与实体绑定的存储过程)的不同方法。目前,我使用方法found here使用设计器(在这种方法中,我导入存储过程,创建函数导入并使用复杂类型作为我的映射对象)。我不喜欢这样,因为它依赖于膨胀的EDMX文件,当两个或更多人执行此过程并检入其代码时,它会在源代码管理中导致合并冲突。

我发现this post声称我可以调用存储过程并映射到普通的旧C#对象(PO​​CO)。

我的问题是,如果我想在不使用设计器方法的情况下将映射到POCO到EF中的存储过程,我如何获得列名称的别名?例如,让我们说我调用一个存储过程并获得一个名为" CustomerID"我希望映射到它的属性命名为" Id"而不是" CustomerID"。如果不使用设计师方法,我该怎么做?

1 个答案:

答案 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]")]