C# C语言中的实体和N层体系结构#

C# C语言中的实体和N层体系结构#,c#,n-tier-architecture,C#,N Tier Architecture,我有三张表,如下所示 Emp ---- empID int empName deptID empDetails ----------- empDetailsID int empID int empDocuments -------------- docID empID docName docType using System; using System.Collections.Generic; using System.Linq; using System.Text; namespa

我有三张表,如下所示

Emp
----
empID int 
empName
deptID


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

empDocuments
--------------
docID
empID
docName
docType
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; }

    }
}
我正在创建一个实体类,以便使用n层体系结构在C#中执行数据库事务等。我开始为相同的对象创建类,如下所示

Emp
----
empID int 
empName
deptID


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

empDocuments
--------------
docID
empID
docName
docType
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; }

    }
}
我的问题是,empID提供的emp详细信息和emp文件与emp相关。我的emp课上怎么会有这些呢

如果你能给我举个例子,我将不胜感激


谢谢你玩过Linq2SQL吗?您可以在那里找到答案。

如果使用,您应该能够从Oracle数据源创建实体。这比你自己做要容易得多。

我推荐你读三篇非常好的文章,帮助你走上正确的道路:

它们基于EF4解决方案,但我认为它们可能仍然非常相关,即使您不使用EF4或LINQ。特别是前两篇文章。写得很好


就您的具体问题而言,看起来您需要为empDetails和empDocuments创建一个实体类,然后在emp中保存empDetails类型的属性和empDocuments的集合(任意IEnumerable)。但当然,您可以使用某种预先构建的框架来帮助您。我认为可能存在EF Oracle实现。

包含外键的表通常表示更大实体的详细信息

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;
}
公共级电磁脉冲{
公共int Id{get;set;}
公共字符串名称{get;set;}
public int DepartmentId{get;set;}
公共IList详细信息{
得到{
返回详细信息;
}
}
私人IList_详细信息;
公共IList文件{
得到{
返回(u)文件;;
}
}
私人IList_文件;
}
使用,您可以不关心您的数据库关系模型,让这个工具通过XML映射文件从类图中使用
SchemaExportTool
自动生成您的数据库关系模式()

有多个插件,如果我们可以这样称呼它们的话,比如

以下是一些有用的链接,可以帮助您了解它:

  • 说到建筑:
  • -->在映射
    emp
    实体类中的两个
    empDetail
    empDocument
    集合时非常有用
  • 使用NHibernate的几个优点:

  • 永远不要再为设计关系模型而烦恼
  • 不必担心底层数据存储,NHibernate通过简单的XML配置文件支持多个数据库引擎(无需为任何底层数据库重新编译应用程序)
  • 一旦你掌握了NHibernate,就可以轻松地将你的发展从25%提高到50%或以上 否则,还有一个我经常与NHibernate一起使用的,或者根据项目的不同,我可能更喜欢只使用不同应用程序块的EntLib:

  • )
  • )
  • )
  • )
  • )
    我可能会忘记其他一些…

    谢谢。我确实使用过LinQtoSQL,但我不能在这个项目中使用LinQ,因为有些奇怪的公司政策和数据库是oracle。还有其他处理数据库和实体的框架,如hibernate、subsonic、entity framework等。你可以读一些关于它们的文章,看看它们如何处理你的情况。毕竟,最终,您将找到一些解决方案,通过现有框架解决您的问题。