我想为我的Entity Framework创建的类实现业务逻辑。
但我无法弄清楚如何做到这一点。
这是我到目前为止所做的:
我有以下扩展名:
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;
}
}
其次,我有Entity Framework创建的类:
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
类继承它。我怎么做?这甚至可能吗?
答案 0 :(得分:0)
您可以创建一个域层,您可以在其中拥有所有业务逻辑并将实体作为参数传递
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
。