如何使用实体框架实现业务逻辑?



我想为我的实体框架创建的类实现业务逻辑。

但是我不知道该怎么做。

这是我到目前为止所做的:

我有以下扩展名:

public static class PropertyExtension
{
public static void SetPropertyValue(this object obj, string propName, object value)
{
obj.GetType().GetProperty(propName).SetValue(obj, value, null);
}
public static object GetPropValue(this object obj, string propertyName)
{
var property = obj.GetType().GetRuntimeProperties().FirstOrDefault(p => string.Equals(p.Name, propertyName, StringComparison.OrdinalIgnoreCase));
return property != null ? property.GetValue(obj) : null;
}
}

其次,我让实体框架创建了类:

public  partial class ADMIN_PANEL 
{
public int AP_REFNO { get; set; }
public string AP_NAME { get; set; }
public string AP_PASSWORD { get; set; }
public Nullable<System.DateTime> AP_LAST_LOGIN { get; set; }
public Nullable<System.DateTime> AP_UPDATEDATE { get; set; }         
}   

我有我创建的分部类

public bool isEmpty { get { return count == 0; } }
public int count { get { return _adminPanelArgs.count; } }
//END PROPERTIES
#region Constructors
public ADMIN_PANEL()
{
OnFillCompleteHandler += ADMIN_PANELBO_OnFillCompleteHandler;
}
#endregion
void ADMIN_PANELBO_OnFillCompleteHandler(object sender, OnFillArgs e)
{
foreach (var propertyInfo in e.ADMIN_PANEL[0].GetType().GetProperties().Where(x => x.CanWrite == true))
{
this.SetPropertyValue(propertyInfo.Name, e.ADMIN_PANEL.First().GetPropValue(propertyInfo.Name));
}
}
public void MyFillAll()
{
using (var lobo = new GymProEntities())
{                         
_adminPanelArgs.ADMIN_PANEL = lobo.ADMIN_PANEL.ToList();
OnOnFillCompleteHandler(_adminPanelArgs);                           
}
}
}

请忽略任何未批准的方法,我只想陈述我的观点。

我想做的是:有另一个 BusinessLayer 类,将MyFillAll方法移动到其中,并使我的ADMIN_PANEL.cs类继承自它。我该怎么做?这可能吗?

您可以创建一个域层,您可以在其中拥有所有业务逻辑并将实体作为参数传递

public class MyDomainService:IMyDomainService
{
public void MyFillAll(Admin_Panel adminPanel)
{
using (var lobo = new GymProEntities())
{                         
_adminPanelArgs.ADMIN_PANEL = lobo.ADMIN_PANEL.ToList();
OnOnFillCompleteHandler(_adminPanelArgs);                           
}
}
}

我还建议使用 DI 框架注入lobo

最新更新