Допустим, имеем хранимку с таким select-ом.
CREATE PROCEDURE GetUsers
AS
BEGIN
SELECT [UserID], [Name] FROM [Users]
RETURN 0
END
Где UserID INT, Name NVARCHAR(50)
Создаем в C# класс:
public class GetUsersResult
{
private int _UserID;
private string _Name;
[Column(Storage="_UserID", DbType="INT NOT NULL")]
public int UserID
{
get { return _UserID; }
set
{
if (_UserID != value)
_UserID = value;
}
}
[Column(Storage="_Name", DbType="NVARCHAR(50)")]
public string Name
{
get { return _Name; }
set
{
if (_Name != value)
_Name = value;
}
}
}
Теперь создаем наследника context-а:
public class CustomDataContext : DataContext
{
...
[Function(Name="dbo.GetUsers")]
public ISingleResult<GetUsersResult> GetUsers()
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
return ((ISingleResult<GetUsersResult>)(result.ReturnValue));
}
}
Теперь пользуемся:
var context = new CustomDataContext();
var result = context.GetUsers();
Console.WriteLine("Return value: {0}", (int)result.ReturnValue); // это то что SP возращает RETURN-ом
foreach (var record in result)
{
Console.WriteLine("UserID: {0}, Name: {1}", record.UserID, record.Name);
}
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. ~Martin Fowler
Данное сообщение получено с сайта GotDotNet.RU
Последний раз редактировалось 07 August 2008 13:01
|