【发布时间】:2011-04-25 09:13:04
【问题描述】:
我理解存储过程映射不支持我的理解是我应该能够调用存储过程。
我有很多复杂的存储过程,通过设计器,我可以创建一个复杂的类型,而且一切都很好。
现在在代码中首先让我们假设我有以下存储过程,只是把一些愚蠢的东西放在一起给出一个想法。我想返回一个有 1 个地址的学生。
在代码中,我有一个学生和地址实体。但是没有StudentAddressEntity,因为它是一个链接表。
我尝试了以下方法,但出现错误
'."} 附近的语法不正确
System.Data.Common.DbException {System.Data.SqlClient.SqlException}
ALTER Procedure [dbo].[GetStudentById]
@StudentID int
AS
SELECT *
FROM Student S
left join StudentAddress SA on S.Studentid = sa.studentid
left join Address A on SA.AddressID = A.AddressID
where S.StudentID = @StudentID
C#代码:
using (var ctx = new SchoolContext())
{
var student = ctx.Database.SqlQuery<Student>("GetStudentById,@StudentID",
new SqlParameter("StudentID", id));
}
有任何示例如何调用 sp 并首先在代码中填充 complexType,使用 out 参数等。我可以挂接到 ADO.NET 吗?
尝试只返回所有不带参数的学生的 SP 我得到这个错误
System.SystemException = 无法为属性创建值 'StudentAddress' 类型 'CodeFirstPrototype.Dal.Address'。仅有的 原始类型的属性是 支持。
是因为我在某种程度上忽略了链接表吗?
有什么建议吗?
【问题讨论】:
标签: entity-framework stored-procedures ef-code-first entity-framework-4.1