我第一次使用三层架构,我在一个解决方案中创建了三个项目,一个项目名为 BLL ,第二个名为 DAL ,第三个一个是名称模型,我在模型中创建了接口,现在想要在BLL中创建业务逻辑,并希望将它连接到我已连接我的数据库的DAL。
为了这个目的,我添加了每个项目的参考资料,比如我在模型中添加了BLL的参考资料,并在DAL中添加了BLL的参考资料。
现在,我已经创建了一个类是DAL,其中我已经连接了我的数据库并且已经在模型中创建了一个Windows窗体,
我连接数据库的类是
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient();
namespace WindowsFormsApplication3
{
class DB
{
public void fnc_ConnectoToDB(ref SqlConnection cn)
{
string strConnectionString = null;
strConnectionString = @"Data Source=AHSANMUGHAL;Initial Catalog=SurveyBuilder;User ID=sa;Password=ahsan";
cn = new SqlConnection();
cn.ConnectionString = strConnectionString;
cn.Open();
}
public void fnc_CloseCn(ref SqlConnection cn)
{
if (cn.State == ConnectionState.Open == true)
{
cn.Close();
}
}
}
}
我知道这有点让人困惑,但我希望你们能理解它并尽快解决问题
答案 0 :(得分:2)
尝试使用像ninject这样的依赖注入框架。
以下是一个例子:
您的实施:
public class Samurai {
public IWeapon Weapon { get; private set; }
public Samurai(IWeapon weapon)
{
this.Weapon = weapon;
}
}
一个给武士提供武器的模块:
public class WarriorModule : NinjectModule
{
public override void Load()
{
this.Bind<IWeapon>().To<Sword>();
}
}
这很简单。
答案 1 :(得分:2)
首先,你需要公开你的课程。
公共类数据库
答案 2 :(得分:0)
以下是基于类的依赖注入的简单示例。
不使用任何IoC(控制反转)容器,这些容器可以使您的实例更易于管理。如果你最初避免使用IOC容器的魔力,我认为更容易概念化。当你向上移动时,它也会让你很高兴。
Ninject是另一个答案中提到的IoC container
,Unity是另一个答案。
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Model : Form
{
public Model()
{
InitializeComponent();
var bll = new BLL(new DAL());
bll.WriteToDatabase("mydbvalue");
}
}
public interface IBll
{
void WriteToDatabase(string value);
}
public class BLL: IBll
{
private IDal _dataLayer;
public BLL(IDal dataLayer)
{
_dataLayer = dataLayer;
}
public void WriteToDatabase(string value)
{
_dataLayer.WriteToDatabase(value);
}
}
public interface IDal
{
void WriteToDatabase(string value);
}
public class DAL:IDal
{
public void WriteToDatabase(string value)
{
fnc_ConnectToDB();
}
}
}