Объект и архитектура N-Tier в C#

У меня есть три таблицы как показано ниже

Emp
----
empID int 
empName
deptID


empDetails
-----------
empDetailsID int
empID int

empDocuments
--------------
docID
empID
docName
docType

Я создаю класс объекта так, чтобы я мог использовать n-tier архитектуру, чтобы сделать транзакции базы данных и т.д. в C#. Я начал создавать класс для того же как показано ниже

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace employee
{
    class emp
    {
        private int empID;
        private string  empName;
        private int deptID;

        public int EmpID { get; set; }
        public string EmpName { get; set; }
        public int deptID { get; set; }

    }
}

Мой вопрос как empDetails, и empDocuments связаны с emp empID. Как у меня есть те, которые в моем emp классе.

Я ценил бы, если можно направить меня к примеру.

Спасибо

5
задан acadia 19 May 2010 в 17:24
поделиться

4 ответа

Таблицы, содержащие внешний ключ, обычно представляют более подробную информацию о сущности.

И EmpDetails , и EmpDocuments представляют разные уровни детализации вашей более крупной сущности Emp .

Поскольку у вас может быть много документов и много деталей для каждого экземпляра Emp , ваши таблицы деталей должны быть собраны в виде списка внутри вашего класса emp .

public class emp {
    public int Id { get; set; }
    public string Name { get; set; }
    public int DepartmentId { get; set; }
    public IList<empDetail> Details { 
        get {
            return _details;
        }
    }
    private IList<empDetail> _details;
    public IList<empDocument> Documents {
        get {
            return _documents;
        }
    }
    private IList<empDocument> _documents;
}

Используя NHibernate , вы можете просто не заботиться о реляционной модели вашей базы данных и заставить этот инструмент автоматически генерировать реляционную схему вашей базы данных с помощью SchemaExportTool из вашей диаграммы классов через сопоставление XML. файлы ( Перейдите по этой ссылке для обзора ).

Существует несколько плагинов, если их можно так назвать, для NHibernate, например Fluent NHibernate (FNH) , Linq to NHibernate .

Вот несколько полезных ссылок, которые помогут вам с ним познакомиться:

  1. Справочная документация NHibernate
  2. Базовое отображение O / R
  3. Конфигурация ISessionFactory
  4. Говоря об архитектуре: Архитектура NHibernate
  5. Сопоставление коллекций -> Очень полезно для сопоставления ваших двух коллекций empDetail и empDocument в вашем классе сущности emp .
  6. Хорошее руководство

Несколько преимуществ использования NHibernate:

  1. Никогда больше не беспокойтесь о проектировании реляционной модели;
  2. Не беспокойтесь о базовом хранилище данных, NHibernate поддерживает несколько механизмов баз данных с помощью простого файла конфигурации XML (нет необходимости перекомпилировать приложение для любой из базовых баз данных);
  3. Легко увеличивайте объем разработки с 25% до 50% или более после того, как вы освоите NHibernate;

В противном случае также имеется Microsoft Enterprise Library , который я часто использую вместе с NHibernate, или, в зависимости от проектов, я могу предпочесть использовать EntLib только с различными блоками приложений:

  1. Блок приложения доступа к данным ;
  2. Блок приложения обработки исключений ];
  3. Блок приложения регистрации ;
  4. Блок приложения безопасности ;
  5. Блок приложения Unity ;

И я могу забыть о некоторых других ...

1
ответ дан 15 December 2019 в 00:52
поделиться

Я бы порекомендовал вам прочитать три действительно хороших статьи, которые помогут вам выбрать правильный путь:

http://msdn.microsoft.com/en-us/magazine/dd882522 .aspx

http://msdn.microsoft.com/en-us/magazine/ee321569.aspx

http://msdn.microsoft.com/en-us/magazine/ee335715.aspx

Они основаны на решении EF4, но я думаю, что они все еще могут быть очень актуальными, даже если вы не используете EF4 или даже LINQ. Особенно первые две статьи. Очень хорошо написано.

Что касается вашего конкретного вопроса, похоже, вам нужно создать класс сущности для empDetails и empDocuments, а затем сохранить свойство в emp типа empDetails и коллекцию (любой IEnumerable) empDocuments. Но, конечно, вы можете использовать что-то вроде готового фреймворка, чтобы вам помочь. Я думаю, что может быть реализация EF Oracle.

2
ответ дан 15 December 2019 в 00:52
поделиться

Если вы используете LINQ to Entities , вы сможете создавать объекты из источника данных Oracle. Это намного проще, чем делать их самостоятельно.

0
ответ дан 15 December 2019 в 00:52
поделиться

Вы играли с Linq2SQL? Здесь вы можете найти свой ответ.

1
ответ дан 15 December 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: