【问题标题】:Entity Framework: Creating custom properties in Business Layer (object)实体框架:在业务层(对象)中创建自定义属性
【发布时间】:2009-04-06 14:47:24
【问题描述】:

使用实体框架创建 DataLayer (DataLayer.dll) DataLayer.dll 包含数据对象。 我需要向“人”类添加一些业务逻辑。

是的,我知道,我可以使用部分类来添加业务逻辑。 但是在这种情况下(使用部分类)我们需要在 DataLayer.dll 中实现它!

我需要使用 BusinessLayer.dll

这样业务层就创建好了(BusinesLayer.dll)

在 BusinesLayer.dll 我们有文件 myPerson.cs

using DataLayer;

namespace Businesslayer
{
public class myPerson : DataLayer.Person

public Property String FullName()
{
  get {return this.Firstname + " " + this.LastName}
}

}

其实我需要在网格中显示数据,像这样

 var data=context.Person;
 dataGridView1.dataSource = data;

是的,context.Person 返回一个 Person-Objects 列表 所以在网格中,列“全名”不可用

如何在 myPerson-Objects 上创建列表?

【问题讨论】:

    标签: c# entity-framework


    【解决方案1】:

    首先,如果您创建 FullName 只是为了在网格中显示它,那么我会说它属于 UI 层,而不是业务层。

    其次,您不需要继承。您可以使用委托。在构造函数中给你的 UIPerson 类一个 Person 的实例。然后,对于要向网格公开的 Person 的每个属性,请执行以下操作:

    public DateTime BirthDate
    {
       get {return _person.BirthDate;}
       set {_person.BirthDate = value;}
    }
    

    ReSharper 可以为您执行此操作,您也可以使用其他工具或手动执行此操作。然后,您可以以相同的方式添加您的 FullName 属性。

    【讨论】:

    • 属性“全名”只是一个示例。是的,业务对象需要更复杂的业务逻辑和不同的附加属性。遵循您的解决方案:在网格中显示 UIPerson 列表: var data=context.Person; foreach 数据中的人 { listUI.add(new UIPerson(person)) }
    • 好吧,更多“var listUI = from person in data select new UIPerson(person);”
    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 2013-11-27
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多