varun150 Ответов: 2

проблема N-уровневой архитектуры.


могу ли я сделать N-уровневую архитектуру в asp.net веб-сайты.??
я пытался, но не смог правильно ссылаться на слои
{Dll,Entities,Dal and website project.}

мне это действительно нравилось.
dal has entity,
bll has entity and Dal,
entity has no layer reference ,
website has entity and bll as referece .
 but when i try to write
using bll;
using entity;


bll не отображается в intellisense и выдает ошибку.
но dll и entity не дают никакой ошибки.
я сделал это снова, начав все сначала.
но возникает та же проблема.

я не могу использовать блл в состоянии дефолта.aspx-файл.в CS
должно быть, что-то не так.
помогите, пожалуйста.

Sergey Alexandrovich Kryukov

Непонятный. Разве вы не смешиваете слои и ярусы? :-)
—СА

varun150

пожалуйста, скажите мне, что я не знаю, что делаю.

2 Ответов

Рейтинг:
2

rmksiva

Привет,

Измените модификаторы доступа для вашего класса слоев.

Обычно я предлагаю

Классы и методы DAL являются внутренними ,поэтому доступ осуществляется только в одном пространстве имен

internal class DataLayer
{
  internal static void SaveToDB(string query)
  {
    
  }
}


А методы BAL являются общедоступными, поэтому вы можете получить доступ в веб-форме, добавив "using BAL;".
public class Employee
{
 public void AddEmployee()
 {
 }
}



Спасибо

Шива РМ К


varun150

можете ли вы сказать мне, почему я не могу ссылаться на bal в default. aspx.cs
как использовать бал;

rmksiva

Вы должны добавить библиотеку классов BAL в качестве ссылки на веб-сайт . Щелкните правой кнопкой мыши на названии веб-сайта в Обозревателе объектов - & gt; Добавить ссылку - & gt; вкладка проект - -- & gt; Добавить

varun150

так что извините, сэр, у меня был только один класс в проекте bal, и я забыл добавить этот класс в пространство имен, вот почему я получал ошибку при записи с использованием Bal по умолчанию. aspx.cs, несмотря на то, что at был ссылкой в wesite.
большое вам спасибо за ваш ответ вы дадите мне идеи

Рейтинг:
0

Louis Lakser

- Да, можешь.
Сначала создайте класс репозитория. Положите его в папку DAL. Конструктор репозитория создаст экземпляр объекта (контекста) имеющейся у вас модели сущностей. Он будет содержать все методы, которые вы используете для извлечения, сохранения и обновления данных.
Затем создайте папку BLL и поместите все ваши расширенные частичные классы и все другие созданные вами классы, которые будут использоваться для принятия решения о том, какие данные возвращать на страницу содержимого на основе переданных параметров. Эти методы будут создавать экземпляр объекта репозитория и вызывать методы репозитория. Если класс обращается к репозиторию, а затем делает что-либо с данными, например анализирует, фильтрует, отправляет параметры, он должен быть в BLL.
В-третьих, на страницах содержимого используйте элемент управления ObjectDataSource для присоединения методов select, update, delete к классам и методам BLL. Тема большая и не для начинающих, но изучайте ее и делайте! Это будет хорошо стоит.

Пример разметки элемента управления ObjectDataSource на странице содержимого:

<asp:objectdatasource id="ImagesObjectDataSource" runat="server" typename="BLL.ImageData" xmlns:asp="#unknown">
        DataObjectTypeName="BLL.ImageData" SelectMethod="GetAllPhotos" DeleteMethod="DeleteImage"
        UpdateMethod="UpdateImage" OnUpdated="ImagesObjectDataSource_Updated" OldValuesParameterFormatString="orig{0}"
        OnUpdating="MappImagesObjectDataSource_Updating" OnDeleted="ImagesObjectDataSource_Deleted"
        ConflictDetection="CompareAllValues">
        <SelectParameters>
            <asp:querystringparameter name="imageID" querystringfield="imageID" type="String" />
        </SelectParameters>
        <updateparameters>
            <asp:parameter name="ImageData" type="Object" />
            <asp:parameter name="origImageData" type="Object" />
        </updateparameters>
    </asp:objectdatasource>

Как вы можете видеть из свойств ObjectDataSources DataObjectTypeName и TypeName, они связаны с BLL.Класс она. БЛЛ.Класс ImageData имеет методы для получения и обработки данных, возвращаемых при вызове методов репозитория.

Это жерех.Чистый веб-сайт N-уровня в ореховой скорлупе. Конечно, есть много реализаций. Но ваши логические слои есть.

Для получения дополнительной информации выполните поиск по элементу управления ObjectDataSource.


Louis Lakser

Кто бы ни проголосовал за это, у него нет решения?

varun150

это очень старый вопрос, но спасибо за ответ, так как он дает хороший альтернативный способ.,