Я понимаю, что сопоставление хранимых процедур не поддерживается, насколько я понимаю, я должен иметь возможность вызывать хранимые процедуры.
У меня довольно много сложных хранимых процедур, и с дизайнером я мог создать сложный тип, и у меня все было хорошо.
Теперь в коде, давайте сначала предположим, что у меня есть следующая хранимая процедура, просто соберите что-нибудь глупое, чтобы дать представление. Я хочу вернуть студента с 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
Код С#:
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». Поддерживаются только свойства с примитивными типами.
Это потому, что я каким-то образом игнорирую таблицу ссылок?
Какие-либо предложения?