【问题标题】:EF 6 Code First From Database - Calling existing stored procedureEF 6 Code First From Database - 调用现有的存储过程
【发布时间】:2015-06-24 21:53:27
【问题描述】:
我正在使用 EF 6 连接到现有的 SQL 数据库。我想为一些现有实体和非 CRUD 存储过程生成模型。在 Visual Studio 中,我添加了一个新的“ADO.NET 实体数据模型”,并为模型内容选择了“数据库中的代码优先”。但是,我可以使用的唯一数据库对象是表和视图。存储过程不可用。这是设计使然还是我在这里遗漏了什么?
【问题讨论】:
标签:
c#
sql-server
entity-framework
entity-framework-6
【解决方案1】:
您需要为每个存储过程定义一个 DTO。您只需创建简单的类,其中类的属性名称与存储过程返回的列的名称相匹配。因此,当您从 EF 调用存储过程时,您的对象将被构建和填充。表演很棒!
这里我贴一个例子:
dbContext.Database.CommandTimeout = 3600;
List<CarsDTO> objs = dbContext.Database.SqlQuery<CarsDTO>(
"spGetCars @carMakeId", new SqlParameter("carMakeId", id)
).ToList();