哪些层是(使LINQ-SQL调用作为的SubmitChanges)最好层,InsertOnSubmit()等等。

例如,假设我有两个表父母与子女。子表对父母外键(子表具有的ParentId列)。我想插入父对象和子对象到数据库。

使用LINQ-SQL,我可以做到这一点。

Parent parent = new Parent();
Child child1 = new Child();
Child child2 = new Child();
//assign values to parent data members
//...

parent.Childs.Add(child1);
parent.Childs.Add(child2);

using (DataContext db = new DataContext())
{
   db.Parents.InsertOnSubmit(parent);
   db.SubmitOnChanges();  
}

我是否混合表示层代码与数据访问层?如果是这样,我怎么用之间的业务层对象做呢?

请让我知道。谢谢。

有帮助吗?

解决方案

有表示层内右边有数据访问可能不这样做的最佳方式。

您可以实现具有访问DataContext的方法Writer类。

Parent parent = new Parent();
Child child1 = new Child();
Child child2 = new Child();
//assign values to parent data members
//...

parent.Childs.Add(child1);
parent.Childs.Add(child2);    

using (var parentWriter = new ParentWriter())
{
  parentWriter.Insert(parent)
}

然后,在包装类

public class ParentWriter : IDisposable
{
  private DataContext _dc;

  public ParentWriter()
  {
    _dc = new DataContext();
  }

  public void Insert(Parent parent)
  {
    _dc.Parents.InsertOnSubmit(parent);
    _dc.SubmitOnChanges();
  }

  //IDisposable Members
  //...
}

这是一个相当简化的例子,并且是未经测试。我已经使用了类似的设计在最近的一个项目,我们有分裂取决于我们与数据做什么数据访问特定的作者和读者的类。

其他提示

我们已经使用L2S建立了一个全面的n层框架。我们有一个独特的UI层,业务逻辑层和数据访问层。我们的实体从UI到业务流程和验证业务层过去了,然后传递到DAL的数据库操作。相反的情况也是如此。客户端发出针对穿过BLL,通过对DAL,并返回给客户端的实体的请求。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top