Вставить используя DataContext и получить ID CSLA C # - PullRequest
0 голосов
/ 15 октября 2019

Как я могу получить идентификатор во время вставки в C # с использованием CSLA? Хранимая процедура выполняет вставку в таблицу базы данных и после вставки имеет SELECT @Id (который устанавливается с SCOPE_IDENTITY()).

Это код для вставки в C #:

using (var mgr = ContextManager<PersonDataContext>.GetManager("TestDB"))
{
    var results = mgr.DataContext.up_StoredProcToInsert(
        "David",
        30,
    );
}

Ответы [ 2 ]

0 голосов
/ 16 октября 2019

Хотя образец не использует хранимую процедуру, полагаясь на EF для выполнения самой работы, вы можете посмотреть на слой доступа к данным EF в примере ProjectTracker, чтобы увидеть, как реализована операция вставки:

https://github.com/MarimerLLC/csla/blob/master/Samples/ProjectTracker/ProjectTracker.DalEf/ProjectDal.cs#L82

    public void Insert(ProjectDto item)
    {
      using (var ctx = ObjectContextManager<PTrackerEntities>.GetManager("PTrackerEntities"))
      {
        var newItem = new Project
        {
          Name = item.Name,
          Description = item.Description,
          Started = item.Started,
          Ended = item.Ended
        };
        ctx.ObjectContext.AddToProjects(newItem);
        ctx.ObjectContext.SaveChanges();
        item.Id = newItem.Id;
        item.LastChanged = newItem.LastChanged;
      }
    }
0 голосов
/ 15 октября 2019

попробуйте приведенный ниже пример на основе операций CRUD с использованием хранимой процедуры в Entity Framework :

SP:

CREATE PROCEDURE SP_Ins_Test 
    @name nchar(10)
AS
BEGIN

    SET NOCOUNT ON;
    INSERT INTO dbo.test(name)
    SELECT @name

    SELECT SCOPE_IDENTITY() AS ResultId
END
GO

Код C #:

DemoDB_JRDevEntities db = new DemoDB_JRDevEntities();
SP_Ins_Test_Result r=db.SP_Ins_Test("Raj").First();
string id= r.ResultId.ToString();
...