Преобразование функции из Code Fluent в Entity Framework - PullRequest
0 голосов
/ 23 сентября 2019

Я работаю в проекте с Code Fluent, но нам нужно перенести его в Entity Framework, поэтому мне нужна помощь для преобразования этой функции или для нахождения ее эквивалента, возможно


 public static System.Data.DataSet GetSpaces(System.Guid userId)
    {
        if ((userId.Equals(CodeFluentPersistence.DefaultGuidValue) == true))
        {
            throw new System.ArgumentNullException("userId");
        }
        System.Data.DataSet ret = default(System.Data.DataSet);
        CodeFluent.Runtime.CodeFluentPersistence persistence = CodeFluentContext.Get(Erpeo.Store.Model.Constants.Erpeo_Store_ModelStoreName).Persistence;
        persistence.CreateStoredProcedureCommand(null, "User", "GetSpaces");
        persistence.AddParameter("@userId", userId);
        System.Data.IDataReader reader = null;
        try
        {
            reader = persistence.ExecuteReader();
            if ((reader.Read() == true))
            {
                ret = CodeFluent.Runtime.CodeFluentPersistence.LoadDataSet(reader);
            }
        }
        finally
        {
            if ((reader != null))
            {
                reader.Dispose();
            }
            persistence.CompleteCommand();
        }
        return ret;
    }

1 Ответ

0 голосов
/ 23 сентября 2019

Я предполагаю, что вы уже создали DbContext, Models and Migrations.Если нет, я рекомендую прочитать документацию Entity Framework Core MS (я предполагаю, что вы работаете в режиме dot net core)

Здесь - это страница, с которой вы можете начать.

Вы должны создать деривацию DbContext, которая будет включать весь ваш DbSet (модели данных / объекты БД).Я предполагаю, что это будет выглядеть, как показано ниже, если у вас уже есть,

public class User
{
    //Your User table columns named properties
}

public class MyDbContext : DbContext
{
    public DbSet<User> Users { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(
            @"Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=True");
    }
}

Вот EF-эквивалент вашего кода, упомянутого выше,

public static User[] GetSpaces(System.Guid userId)
{
    if (userId.Equals(Guid.Empty))
    {
        throw new System.ArgumentNullException("userId");
    }
    var ret = default(User[]);
    try
    {
        using (var persistence = new MyDbContext())
        {
            ret = persistence.Users.FromSql("GetSpaces", userId).ToArrayAsync().Result;
        }
    }
    catch { }
    finally { }
    return ret;
}

Вы действительно должны будете предоставить много деталейчтобы это решение соответствовало вашим требованиям, но это во многом будет соответствовать вашему запросу.

...