use*_*923 5 stored-procedures entity-framework ef-code-first entity-framework-4.1
我理解存储过程映射不支持我的理解是我应该能够调用存储过程.
我有很多复杂的存储过程,设计师我可以创建一个复杂的类型,我一切都很好.
现在在代码中首先让我假设我有以下存储过程,只是把一些愚蠢的东西放在一起给出一个想法.我想找一个有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
Run Code Online (Sandbox Code Playgroud)
C#代码:
using (var ctx = new SchoolContext())
{
var student = ctx.Database.SqlQuery<Student>("GetStudentById,@StudentID",
new SqlParameter("StudentID", id));
}
Run Code Online (Sandbox Code Playgroud)
那里有任何例子如何调用sp并首先在代码中填充complexType,使用参数等.我可以挂钩到ADO.NET吗?
尝试只返回没有参数的所有学生的SP我得到了这个错误
System.SystemException =无法为"CodeFirstPrototype.Dal.Address"类型的属性"StudentAddress"创建值.仅支持具有基本类型的属性.
是因为我在某种程度上忽略了链接表吗?
有什么建议?
我相信你的例外实际上是:
','附近的语法不正确.
因为这是无效的陈述:"GetStudentById,@StudentID"
.应该没有逗号:"GetStudentById @StudentID"
.
EF中存储过程的问题是它们不支持加载导航属性.EF将仅实现主实体,并且不会加载导航属性.这例如通过EFExtensions解决.EFExtensions用于ObjectContext API,因此您必须检查它是否也可用于DbContext API.
归档时间: |
|
查看次数: |
6046 次 |
最近记录: |