C# 实体框架:在业务层(对象)中创建自定义属性

C# 实体框架:在业务层(对象)中创建自定义属性,c#,entity-framework,C#,Entity Framework,使用实体框架创建数据层(DataLayer.dll) DataLayer.dll包含数据对象。 我需要向类“person”添加一些业务逻辑 是的,我知道,我可以使用分部类来添加业务逻辑。 但是在这种情况下(使用分部类),我们需要在DataLayer.dll中实现它 我需要使用BusinessLayer.dll 这样就创建了业务层(BusinesLayer.dll) 在BusinesLayer.dll中,我们有文件myPerson.cs using DataLayer; namespace Bu

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

是的,我知道,我可以使用分部类来添加业务逻辑。 但是在这种情况下(使用分部类),我们需要在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对象的列表 因此,在网格中,“FullName”列不可用


如何在myPerson对象上创建列表?

首先,如果创建全名只是为了在网格中显示它,那么我认为它属于UI层,而不是业务层

第二,你不需要继承。你可以使用委托。在构造函数中为UIPerson类提供Person的实例。然后,对于要向网格公开的个人的每个属性,执行以下操作:

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

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

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

第二,你不需要继承。你可以使用委托。在构造函数中为UIPerson类提供Person的实例。然后,对于要向网格公开的个人的每个属性,执行以下操作:

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

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

属性“FullName”只是一个示例。是的,业务对象需要更复杂的业务逻辑和不同的附加属性。按照您的解决方案:在网格中显示UIPerson的列表:var data=context.Person;对于数据中的每个人{listUI.add(new-UIPerson(person))}那么,更多“var-listUI=from-person-in-data-select-new-UIPerson(person);”属性“FullName”只是一个示例。是的,业务对象需要更复杂的业务逻辑和不同的附加属性。按照您的解决方案:在网格中显示UIPerson的列表:var data=context.Person;对于数据中的每个人{listUI.add(new-UIPerson(person))}嗯,更多“var-listUI=from-person-in-data-select-new-UIPerson(person);”