Не удалось зациклить возврат данных из структуры DAL Entity в PL - PullRequest
0 голосов
/ 12 февраля 2012

Я использую Entity Framework 4 в своем проекте.Одним из основных требований является выборка данных из базы данных с использованием хранимой процедуры и зацикливание этих данных на уровне представления, а также связывание с выпадающим списком, управление сеткой и т. Д.вызов BLL и вызов BLL DAL

Примеры кода:

DAL:

namespace DAL.Repository
{
    public class CountryRepository
    {
        public static IList GetCountry(string CountryId)
        { 
            using(MyDBEntities context=new MyDBEntities())
            {
               // it calls SP in DB thru EF to fetch data
                return context.GetCountry(CountryId).ToList();

            }
        }
    }
}

BLL

namespace BLL
{
   public class Country
    {
       public static IList GetCountry(string CountryId)
       {
           return DAL.Repository.CountryRepository.GetCountry(CountryId);
       }
    }
}

PL

  ddlCountry.DataTextField = "CountryName";
  ddlCountry.DataValueField = "CountryId";
  ddlCountry.DataSource= BLL.Country.GetCountry(string.Empty);
  ddlCountry.DataBind();

* Здесь переплет работает нормально.Но я не уверен, что это лучший вариант.Пожалуйста, предложите мне.

       System.Collections.IEnumerator lst= BLL.Country.GetCountry(string.Empty).GetEnumerator();
        while(lst.MoveNext())
        {
            string s = ((DAL.Entity.ORM.Country)(lst.Current)).Countryname;

         /* This is the main issue. To get data from [current]
         reference of [DAL.Entity.ORM.Country] is required.
         It is strongly not good practice to keep reference
         of DAL in PL. */
        }

Каков наилучший способ извлечения данных из базы данных с использованием процедуры EF с сохранением и независимого использования этих данных в PL?

Безопасно ли использовать статический метод, который я использовал?

Пожалуйста, предложите мне.

1 Ответ

0 голосов
/ 19 февраля 2012
  1. В идеале вы не хотите ссылаться на свой DAL в своем PL. Вы можете иметь общий тип с вашими PL и BL. BL преобразует ваш тип DAL в этот тип перед возвратом.

  2. Для примера, который вы показали, да, статический метод должен подойти.

...