【问题标题】:How to implement business logic using Entity Framework?如何使用实体框架实现业务逻辑?
【发布时间】:2017-07-11 12:43:28
【问题描述】:

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

但我不知道该怎么做。

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

我有以下扩展:

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 类继承自它。我怎么做?这甚至可能吗?

【问题讨论】:

    标签: c# entity-framework generics


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-12
      • 2011-04-15
      • 2013-09-14
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多