C#WinForms组织数据层

时间:2019-09-19 19:59:48

标签: c# .net winforms architecture software-design

正在启动一个新的大型模块化项目,该项目将包含约30个模块,并将使用MySQL数据库。我的想法是在新项目中分离模块。 所有模块项目都将使用MVP模式。

Domain层用于存储Entities,例如UserProductCatogory有关字段的信息。

DBA层仅用于Repositories,在这里我将调用CUID方法。

我的问题是:

  1. 可以在不使用EntityFramework的情况下将存储库与域层一起使用吗?我读的所有示例都是关于EF的。我可以避免这种做法吗?

我为所有存储库创建存储库接口:

public interface IBaseRepository<T>
{
    T GetById(Int64 id);

    void Create(T entity);   
    void Update(T entity);  
    void Delete(T entity);
}

简单的Product存储库

public class ProductRepository : Base.IBaseRepository<Product>
{
    public void Create(Product entity)
    {
        //
    }

    public void Delete(Product entity)
    {
        throw new NotImplementedException();
    }

    public Product GetById(long id)
    {
        using (var conn = new MySqlConnection(ConnectionString))
        {
            conn.Open();
            using (MySqlCommand cmd = conn.CreateCommand())
            {
                cmd.CommandText = "SELECT * FROM SomeTable";
                using (MySqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        // etc ...
                    }
                }
            }
        }
    }

    public void Update(Product entity)
    {
        throw new NotImplementedException();
    }
}

对于大型项目,这是一种好的做法吗?您能建议我为将来的程序进行编辑的内容吗? 我想创建一个非常好的项目结构,欢迎所有评论。

enter image description here

0 个答案:

没有答案