У меня есть три таблицы как показано ниже
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 классе.
Я ценил бы, если можно направить меня к примеру.
Спасибо
Таблицы, содержащие внешний ключ, обычно представляют более подробную информацию о сущности.
И 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
.
Вот несколько полезных ссылок, которые помогут вам с ним познакомиться:
empDetail
и empDocument
в вашем классе сущности emp
. Несколько преимуществ использования NHibernate:
В противном случае также имеется Microsoft Enterprise Library , который я часто использую вместе с NHibernate, или, в зависимости от проектов, я могу предпочесть использовать EntLib только с различными блоками приложений:
И я могу забыть о некоторых других ...
Я бы порекомендовал вам прочитать три действительно хороших статьи, которые помогут вам выбрать правильный путь:
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.
Если вы используете LINQ to Entities , вы сможете создавать объекты из источника данных Oracle. Это намного проще, чем делать их самостоятельно.
Вы играли с Linq2SQL? Здесь вы можете найти свой ответ.