c#DAL类和业务层类

时间:2010-11-19 08:47:52

标签: c# class-design

HI,

你能告诉我这是否可能。

public class Person
{
    public string Name { get; set; }
    public int ID { get; set; }
}

填充一个类调用说一个名为Entities的程序集中的人员,代码的填充是在名为DataAccessLayer的不同程序集中完成的(所以人和填充它的地方不在同一个程序集中)< / p>

//以下代码将从datareader等读取,但刚刚完成此操作使其易于解释。

Person p=new Person();
p.Name="tom";
p.id = 10;

此类人员现在可供其他系统访问,以便他们能够访问此人。我想要的是阻止其他系统能够更改ID。能够阅读但不能写。我是否需要创建另一个类等来允许这个并且只将这个类暴露给另一个系统(即业务对象)(即ORM)?

我知道很多人会说只是简单地写ID。即

public int ID { get; }

但如果我这样做,那么我不能从类似于上面的代码中填充ID,因为在我的DataAccessLayer中,我将无法设置ID,因为它是只读的。

感谢 尼尔

2 个答案:

答案 0 :(得分:4)

您可以为可以传入ID的对象创建internal构造函数,然后设置Entities DLL的标志,允许另一个DLL(DataAccessLayer)能够查看和使用此内部调用DLL。 (InternalsVisibleTo属性)

答案 1 :(得分:0)

查看将为您分配实体ID的ORM工具,您的id属性将显示:

public class MyEntity
{
     public virtual int ID { get; protected set; }

     // other properties
}

如果选择这种方式,则无需担心分配属性和转换类型。